Unity 6.3
0 онлайн 2 гостей 3 в системе
Вход

Time.timeScale

Declaration

public static float timeScale;

Описание

Скорость, с которой игровое время проходит относительно реального времени.

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

Когда timeScale установлен на нуль, ваше приложение будет действовать как приостановленное, если все ваши функции независимы от частоты кадров. Отрицательные значения игнорируются.

Изменение timeScale влияет только на следующие кадры.

FixedUpdate функции и приостановленные Coroutines с WaitForSeconds не вызываются, когда timeScale установлен на нуль.

Если вы измените Time.timeScale, но не Time.fixedDeltaTime, скорость физики симулирования остается постоянной относительно игрового времени, но не относительно реального времени. Чтобы сохранить скорость физики симулирования постоянной относительно реального времени, вы можете умножить Time.fixedDeltaTime на новый timeScale. Обычно желаемое поведение для физики симулирования остается последовательным относительно игрового времени, но некоторые геймплей, синхронизация звука или логика эффектов могут полагаться на постоянную фиксированную частоту обновления в реальном времени.

В следующем примере переключается шкала времени между 1 и 0.7 каждый раз, когда пользователь нажимает кнопку Fire1, и настраивается фиксированное дельта время в соответствии с новой шкалой времени, так что физика симулирования остается последовательной относительно реального времени, а не игрового времени.

using UnityEngine;

public class Example : MonoBehaviour { // Toggles the time scale between 1 and 0.7 // whenever the user hits the Fire1 button.

private float fixedDeltaTime;

void Awake() { // Make a copy of the fixedDeltaTime, it defaults to 0.02f, but it can be changed in the editor this.fixedDeltaTime = Time.fixedDeltaTime; }

void Update() { if (Input.GetButtonDown("Fire1")) { if (Time.timeScale == 1.0f) Time.timeScale = 0.7f; else Time.timeScale = 1.0f; // Adjust fixed delta time according to timescale // The fixed delta time will now be 0.02 real-time seconds per frame Time.fixedDeltaTime = this.fixedDeltaTime * Time.timeScale; } } }