«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как внедрить задержки в Unity для геймплея и секвенирования событий?

Как внедрить задержки в Unity для геймплея и секвенирования событий?

Опубликовано в 2025-02-06
Просматривать:620

How to Implement Delays in Unity for Gameplay and Event Sequencing?

подробное объяснение реализации задержки единства

]]]

создание задержек в единстве необходимо для управления игровыми потоками, сортировки событий и имитации реального поведения. Вот несколько способов достижения задержки:

1. startCoroutine

: объявить функцию Coroutine.
  • waitForseconds : pauses выполнение в течение указанного времени (затронуто скоростью игры).
  • waitForseCondSRealTime : pauses выполнение для указанного времени (не затронуто скорости игры).
  • Пример:
ienumerator waitForseCondSexample () { // поворачивать 90 градусов Transform.rotate (Vector3.right * 90); // ждать 4 секунды (не зависит от скорости игры) доход вернуть новый waitforsecondsrealtime (4); // поворачивать 40 градусов Transform.rotate (Vector3.right * 40); // ждать 2 секунды (затронута скоростью игры) доход вернуть новые waitforseconds (2); // поворачивать 20 градусов Transform.rotate (Vector3.right * 20); }

2.
IEnumerator WaitForSecondsExample()
{
    // 旋转90度
    transform.Rotate(Vector3.right * 90);

    // 等待4秒(不受游戏速度影响)
    yield return new WaitForSecondsRealtime(4);

    // 旋转40度
    transform.Rotate(Vector3.right * 40);

    // 等待2秒(受游戏速度影响)
    yield return new WaitForSeconds(2);

    // 旋转20度
    transform.Rotate(Vector3.right * 20);
}
или

для цикл

: Постепенно увеличить таймер, пока не будет достигнуто желаемое значение.
  • дайте возврат null : pause выполнение одного кадра.
  • Пример: ienumerator TimeBasedLoopexample () { // поворачивать 90 градусов Transform.rotate (Vector3.right * 90); // ждать 4 секунды (затронут скоростью игры) timer float = 0; В то время как (таймер

3.

IEnumerator TimeBasedLoopExample()
{
    // 旋转90度
    transform.Rotate(Vector3.right * 90);

    // 等待4秒(受游戏速度影响)
    float timer = 0;
    while (timer 
: выполнение не приостановлено до тех пор, пока условие не станет истинной.

waitwhile : pause execution, когда условие верно.

  • Пример: ienumerator waituntilexample () { // ждать, пока счет игрока достигнет 100 доход вернуть новый waituntil (() => playercore> = 100); // загрузить следующий уровень SceneManager.loadScene ("nextlevel"); }
  • 4.
invoke

: Запланировать функцию для выполнения после указанной задержки.

IEnumerator WaitUntilExample()
{
    // 等待玩家分数达到100
    yield return new WaitUntil(() => playerScore >= 100);

    // 加载下一关
    SceneManager.LoadScene("NextLevel");
}
: аналогично

invoke , но функция вызывается многократно через указанные интервалы времени.

Пример:
  • invoke ("feedDog", 5); InvokeRepeating («MovePlayer», 0,5F, 0,2F); ]]
  • 5.
  • time.deltatime : используется для измерения времени между кадрами.
  • переменная таймера
: увеличить каждый кадр до тех пор, пока не будет достигнуто желаемое значение.

if
Invoke("FeedDog", 5); // 5秒后调用FeedDog()

InvokeRepeating("MovePlayer", 0.5f, 0.2f); // 每0.2秒调用MovePlayer(),持续0.5秒。

Пример:

void update () { timer = time.deltatime; if (таймер> = 5) { // выполнить код через 5 секунд таймер = 0; Feeddog (); } }
  • решить вашу проблему: для создания задержки при отображении текста в вашем скрипте вы можете использовать следующий код:
  • ienumerator showTextWithDelay () { Textui.text = "Добро пожаловать в цифровой мастер!"; доход вернуть новые waitForseconds (3F); Textui.text = («Наибольшее число, которое вы можете выбрать, - это« макс); доход вернуть новые waitForseconds (3F); Textui.text = («Самое низкое число, которое вы можете выбрать, это« мин); } StartCoroutine (showTextWithDelay ());
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3