Unity 自带的一些可以操控时间的属性或方法。

今天来总结下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不受帧率影响,它的时间是固定的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/226028.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL数据库入门到大牛_基础_17_触发器

文章目录 1. 触发器概述2. 触发器的创建2.1 创建触发器语法2.2 代码举例 3. 查看、删除触发器3.1 查看触发器3.2 删除触发器 4. 触发器的优缺点4.1 优点4.2 缺点4.3 注意点 5. 第十七章练习 在实际开发中,我们经常会遇到这样的情况:有 2 个或者多个相互关…

【开源】基于Vue.js的高校学生管理系统的设计和实现

项目编号: S 029 ,文末获取源码。 \color{red}{项目编号:S029,文末获取源码。} 项目编号:S029,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 学生管理模块2.2 学院课程模块2.3 学…

deque容器结构学习笔记

1.结构图 2.deque对比vector和list deque双端队列,就像是list和vector的结合 vector: 优点:1.可以随机读取 2. 空间利用率高 缺点:1. 除了尾插尾删,其他插入删除效率比较低 2. 扩容效率低 list: 优点&…

和鲸社区 × 浙大地科学院:DDE 深时数字地球国际大科学计划系列工作坊圆满收官!

AI for Good,AI for Science,11 月 23 日,由和鲸社区联合浙江大学地球科学学院师生共同发起的 DDE 深时数字地球国际大科学计划系列工作坊正式落下帷幕。 深时数字地球(Deep-time Digital Earth,DDE)是由我…

视频文件+EasyDarwin做摄像机模拟器模拟RTSP流很方便,还能做成系统服务,方法与流程

之前我看到过一家人工智能做算法的企业,用EasyDarwinFFMPEG做了一个摄像机的模拟器,方法大概是: 用ffmpeg读取mp4等类型的视频文件(当然ffmpeg啥都能读取),再以RTSP协议的形式推送给EasyDarwin&#xff1b…

【Java】I/O流—缓冲流的基础入门和文件拷贝的实战应用

🌺个人主页:Dawn黎明开始 🎀系列专栏:Java ⭐每日一句:你能坚持到什么程度,决定你能达到什么高度 📢欢迎大家关注🔍点赞👍收藏⭐️留言📝 文章目录 一.&…

前端开发学习 (三) 列表功能

一、列表功能 1、列表功能 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv"X-UA-Compa…

Doris_Doris导入常见问题

Doris数据导入错误 &#xff1a;the length of input is too larger than schema 可能原因&#xff1a;varchar长度设置过短 Doris表字段乱序 导入palo表中的csv本身无schema信息&#xff0c;csv与palo表字段顺序必须一致&#xff0c;否则会错乱 Doris数据文件中字段比表字段…

Python基础语法之学习数据转换

Python基础语法之学习数据转换 一、代码二、效果 一、代码 #数字转换成字符串 num_str str(11) print(type(num_str))#字符串转整数 numint("11") print(type(num),num)#浮点数转整数 float_num int(11.1) print(type(float_num),float_num)#整数转浮点数 num_flo…

微信可以添加多少好友?

不知道有没有小伙伴好奇&#xff0c;微信到底可以添加多少好友&#xff1f;正好这个话题也上热搜了&#xff0c;我们就来了解一下。 有网友表示&#xff0c;自己的微信好友数量有10004个&#xff0c;已经不能再添加新的微信好友了。 一个微信号&#xff0c;可以添加的好友上限…

微信支付和微信红包设计用例

微信支付 功能 扫二维码 1.第一次扫描付钱二维码时可以得到相机权限&#xff0c;进入付钱界面 2.第一次扫描付钱二维码时可以拒绝相机权限&#xff0c;退回聊天界面 3.扫一扫可以扫描收钱的二维码 4.扫描出来的信息与收钱人信息相符 5.输入框只能输入数字 6.一次能支付的…

安全防控 | AIRIOT智能安防管理解决方案

现代社会对安全和便捷性的需求越来越高&#xff0c;特别是在大型商业园区、住宅社区和办公大楼等场所。传统的安防系统往往存在一些痛点: 通行效率问题&#xff1a;传统门禁系统通常导致人员排队等待&#xff0c;降低了通行效率。车辆通行管理不当会导致交通拥堵和停车问题。 …