При использовании целевых областей в Vuforia мы видим лаги всякий раз, когда мы уничтожаем его.
LAG можно проследить от Observerbehaviour.Ondisable до нативного призыв к vuobserver.vuobserverdeactivate .
Соответствующий код:
PrettyPrint-Override ">AreaTargetBehaviour at = ...;
Destroy(at.gameObject);
< /code>
Unity Profiler показывает более 300 мс для этого вызова Вот почему мы экспериментировали с использованием отражения, чтобы вручную вызовать логику очистки и запустить ее в задаче: < /p>
var task = Task.Run(() =>
{
var obs = typeof(AreaTargetBehaviour)
.GetField("mObserver", BindingFlags.Instance | BindingFlags.NonPublic)
?.GetValue(Behaviour);
obs?.GetType()
.GetMethod("DoDeactivate", BindingFlags.Instance | BindingFlags.NonPublic)
?.Invoke(obs, null);
});
yield return new WaitUntil(() => task.IsCompleted)
< /code>
Но это только немного помогло, теперь логика действительно выполняется в «фоновой работе». Однако для завершения требуется два кадра, и выполнение все еще отстает от приложения. Также мы бы предпочли не использовать отражение, если это возможно. Устройства.
Есть ли в Vuforia какое -либо способ уничтожить цели площади на заднем плане, не подвергаясь этому штрафу с задержкой?
Подробнее здесь: https://stackoverflow.com/questions/797 ... s-is-laggy