关于建立网站的计划,四川省凉亭建设工程有限公司网站,wordpress自动发卡,广点通投放平台登录今天来总结下Unity自带的一些可以操控时间的方法。
1、Time.time。比较常用计算运行时间而触发特定事件。
public class Controller : MonoBehaviour
{public float eventTime 5f; // 触发事件的时间private float startTime; // 游戏开始的时间private void Start(){startT…今天来总结下Unity自带的一些可以操控时间的方法。
1、Time.time。比较常用计算运行时间而触发特定事件。
public class Controller : MonoBehaviour
{public float eventTime 5f; // 触发事件的时间private float startTime; // 游戏开始的时间private void Start(){startTime Time.time; // 记录游戏开始的时间}private void Update(){if (Time.time - startTime eventTime){// 达到触发事件的时间执行特定事件DoSomething();}}private void DoSomething(){// 特定事件Debug.Log(Event triggered!);}
}
2、Time.deltaTime参考这篇笔记关于Unity Time.deltaTime的理解和使用-CSDN博客
3、WaitForSeconds协程。延时最适合。
public class Controller : MonoBehaviour
{ private void Start(){StartCoroutine(DelayCoroutine());}private IEnumerator DelayCoroutine(){ yield return new WaitForSeconds(1f);Debug.Log(我延迟了1秒); }
}4、Time.timeScale这个属性可用于控制游戏的时间流逝速度。将其设置为1表示正常速度大于1表示加速小于1表示减速设置为0表示暂停。如下面模拟加减速的一个案例
using UnityEngine;
using UnityEngine.UI;public class Controller : MonoBehaviour
{public float accelerationTime 1f; // 加速时间public float decelerationTime 1f; // 减速时间public float pauseTime 1f; // 暂停时间public Image image; // 图片对象private float targetTimeScale 1f; // 目标时间缩放值private float currentTimeScale 1f; // 当前时间缩放值private float timeScaleVelocity; // 时间缩放值的变化速度private float rotationSpeed 500f; // 图片旋转速度private int currentState 0; // 当前状态0表示加速1表示减速2表示暂停private float stateTimer 0f; // 状态计时器private void Update(){// 根据目标时间缩放值逐渐调整当前时间缩放值currentTimeScale Mathf.SmoothDamp(currentTimeScale, targetTimeScale, ref timeScaleVelocity, GetTimeScaleChangeDuration());// 应用当前时间缩放值Time.timeScale currentTimeScale;// 根据当前时间缩放值调整图片的旋转角度image.rectTransform.Rotate(Vector3.forward, rotationSpeed * Time.deltaTime * currentTimeScale);// 更新状态计时器stateTimer Time.deltaTime;// 根据当前状态和状态计时器切换目标时间缩放值switch (currentState){case 0: // 加速状态if (stateTimer accelerationTime){stateTimer 0f;targetTimeScale 0.5f; // 切换到减速状态currentState 1;}break;case 1: // 减速状态if (stateTimer decelerationTime){stateTimer 0f;targetTimeScale 0f; // 切换到暂停状态currentState 2;}break;case 2: // 暂停状态if (stateTimer pauseTime){stateTimer 0f;targetTimeScale 2f; // 切换到加速状态currentState 0;}break;}}private float GetTimeScaleChangeDuration(){if (targetTimeScale currentTimeScale){return accelerationTime; // 如果目标时间缩放值大于当前时间缩放值则返回加速时间}else{return decelerationTime; // 如果目标时间缩放值小于当前时间缩放值则返回减速时间}}
}Unity模拟加减速_哔哩哔哩_bilibili
5、Time.fixedDeltaTime物理模拟的固定时间步长。 在Project Settings中Time的Fixed Timestep可设置它的值。
Time.fixedDeltaTime跟Time.deltaTime最大的区别是Time.fixedDeltaTime不受帧率影响它的时间是固定的。