Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите сделать временную паузу Unity 3D

Steams Steams Ученик (100), на голосовании 8 месяцев назад
Как сделать паузу в Invoke на 2 секунды и потом продолжить игру? Делаю нажатие на объект(в моё случае на растение) и поливаю его

Вот пример кода, но игра просто не отжимает паузу после того как пройдет 2 секунды:

if (Input.GetMouseButton(0))
{
Time.timeScale = 0;
text1.SetActive(true);
Invoke("TextWait1", 2f);
}

void TextWait1()
{
Time.timeScale = 1f;
text1.SetActive(false);
Destroy(text1);
}
Голосование за лучший ответ
Андрей Панарин Искусственный Интеллект (249477) 9 месяцев назад
Я попробовал Invoke с разными значениями времени и timeScale.
Время в Invoke ускоряется и замедляется в соответствии с timeScale.
При timeScale = 0 время для Invoke не идет.

Мне удалось сделать отсчет реального времени независимо от timeScale при помощи сопрограммы (корутины).

 // При нажатии кнопки запускается этот метод.
// Он на две секунды стопает игру и показывает фигуру,
// а потом прячет ее и возобновляет игру
public void ToggleShapeWithCoroutineReal()
{
Time.timeScale = 0f;
shape.SetActive(true);
StartCoroutine(HideShapeLaterReal(2f));
}

private IEnumerator HideShapeLaterReal(float time)
{
yield return new WaitForSecondsRealtime(time);
Time.timeScale = 1f;
shape.SetActive(false);
}
Steams SteamsУченик (100) 9 месяцев назад
Спасибо помогло
Steams SteamsУченик (100) 9 месяцев назад
Вы не знаете как продолжать анимацию даже в паузе?
Андрей Панарин Искусственный Интеллект (249477) Предлагают в аниматоре использовать режим Unscaled.
Похожие вопросы