Как реже вызывать OnTriggerEnter? - PullRequest
0 голосов
/ 22 февраля 2020

У меня есть игра, которую я разрабатываю, и она требует многократного вызова OnTriggerEnter() с большим количеством различных GameObjects. Хотя это называется много, мне не нужно, чтобы его вызывали очень часто. Итак, мне было интересно, можно ли снизить частоту вызова метода, например, вызывать его при каждом другом обновлении или даже реже. Это возможно?

Ответы [ 3 ]

0 голосов
/ 22 февраля 2020

Вы можете проверить столкновения триггера вручную с помощью таких функций, как Physics.CheckBox .

Поместите его в медленную сопрограмму и кешируйте результат столкновения, чтобы вы всегда могли проверить последнее состояние этого.

0 голосов
/ 22 февраля 2020

Все еще на ранней стадии изучения как Unity, так и C#, но это возникло в упражнении и может быть ответом на вашу проблему?

от: https://docs.unity3d.com/Manual/Coroutines.html

По умолчанию сопрограмма возобновляется в кадре после его выдачи, но также можно ввести задержку по времени, используя WaitForSeconds:

Это можно использовать как способ распространять эффект в течение определенного периода времени, но это также полезная оптимизация. Многие задачи в игре необходимо выполнять периодически, и наиболее очевидный способ сделать это - включить их в функцию обновления. Однако эта функция обычно вызывается много раз в секунду. Когда задачу не нужно повторять достаточно часто, вы можете поместить ее в сопрограмму, чтобы получать обновления регулярно, но не каждый отдельный кадр. Примером этого может быть сигнал тревоги, который предупреждает игрока, если рядом находится враг.

Чтобы запустить сопрограмму, вам нужно использовать функцию StartCoroutine:

0 голосов
/ 22 февраля 2020

OnTrigger зависит от FixedUpdate. Правка> Настройки> Время> Фиксированный временной шаг.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...