Hola, tengo la siguiente situación: estoy haciendo una aplicación con unity 3d y c#
(Soy nuevo en C#) en la que estoy usando la sdk de Easyar. El problema que tengo es que no sé cómo usar la función de una clase de la sdk a continuación les dejo lo que tengo hasta ahora hecho y la función que quiero utilizar.
Gracias
Lo que tengo hasta ahora:
public class Audiora : MonoBehaviour
{
public AudioClip otherClip;
public AudioSource audios;
private AudioSource[] allAudioSources;
private AudioSource audioN;
private readonly ImageTrackerFrameFilter filter = new ImageTrackerFrameFilter();
void Start()
{
//Aquí es donde necesito llamar a la función de la clase ImageTrackerFrameFilter
}
}
Función que quiero llamar.
public List<KeyValuePair<Optional<TargetController>, Matrix44F>> OnResult(Optional<FrameFilterResult> frameFilterResult)
{
var resultControllers = new List<KeyValuePair<Optional<TargetController>, Matrix44F>>();
var targetIDs = new List<int>();
var lostIDs = new List<int>();
if (frameFilterResult.OnSome)
{
var targetTrackerResult = frameFilterResult.Value as TargetTrackerResult;
foreach (var targetInstance in targetTrackerResult.targetInstances())
{
using (targetInstance)
{
if (targetInstance.status() != TargetStatus.Tracked)
{
continue;
}
var targetOptional = targetInstance.target();
if (targetOptional.OnNone)
{
continue;
}
using (var target = targetOptional.Value)
{
var controller = TryGetTargetController(target.runtimeID());
if (controller)
{
targetIDs.Add(target.runtimeID());
resultControllers.Add(new KeyValuePair<Optional<TargetController>, Matrix44F>(controller, targetInstance.pose()));
}
}
}
}
}
foreach (var id in previousTargetIDs)
{
lostIDs.Add(id);
}
foreach (var id in targetIDs)
{
if (lostIDs.Contains(id))
{
lostIDs.Remove(id);
}
var controller = TryGetTargetController(id);
if (controller && controller.IsLoaded)
{
controller.OnTracking(true);
}
}
foreach (var id in lostIDs)
{
var controller = TryGetTargetController(id);
if (controller)
{
controller.OnTracking(false);
}
}
previousTargetIDs = targetIDs;
return resultControllers;
}
No he usado unity, pero ...
OnResult Es una funcion que retorna una Lista de KeyValuePair, osea que tiene como
Key TargetController y
Value Matrix44FA la funcion
OnResult tambien debes pasarle un parametro
FrameFilterResult hay un identeificador
Optional, no se para que sirve, pero si es lo mismo que en VB, entonces no hay necesidad de pasarle parametro, ya que es opcional.
FrameFilterResult FrameFilterEX;
List<KeyValuePair[<TargetController, Matrix44F>]> OnResultData = OnResult(FrameFilterEX);
foreach (KeyValuePair[<TargetController, Matrix44F>] ResultData in OnResultData)
{
TargetController TargetControllerEx = ResultData.Key;
Matrix44F MatrixEx = ResultData.Value;
}
Seria algo como eso, Osea no tal cual, pero si similar.