当前位置:网站首页>Unity—常用API(续Time类)
Unity—常用API(续Time类)
2022-07-16 14:41:00 【小小数媒成员】
今天整理了Time类!
+一张很有意思的理解API的图
(此图灵感来源于 如何理解API,API 是如何工作的_仁杰兄的博客-CSDN博客_api)

目录
*在Update每帧执行的方法中,个别语句实现指定间隔执行一次
Time
Time.time以秒计算,从游戏开始的时间
Time.deltaTime 每帧消耗的时间(每帧的时间间隔)
Public void Update()//渲染更新
{ 在渲染帧中做速度恒定的移动、旋转
//每渲染帧执行一次,旋转一度
//帧多 —>1秒旋转速度快 希望1帧旋转量小
//帧少 —>1秒旋转速度慢 希望1帧旋转量大
This.transform.Rotate(0,1*Time.deltaTime,0)
}
旋转速度*每帧消耗时间,可以保证旋转速度不受渲染影响
或者
public void FixedUpdate()//物理更新
{
this.transform.Rotate(0,1,0);
)
Time.timeScale受缩放影响的每帧间隔
Time.timeScale=0游戏暂停 Time.timeScale=1继续游戏
物体在FixedUpdate()移动,点“暂停”、“继续”都好使
(即便Time.timeScale没有在FixedUpdate()里)
因为FixedUpdate()固定时间执行一次,与渲染无关,受Time.timeScale影响
在Update()里不好使,因为Update()渲染场景时执行,不受Time.timeScale影响,但Time.deltaTime会受到Time.timeScale影响
需求:游戏暂停以后,个别物体不受影响
在Updete中做
用this.transform.Rotatel(0,1*Time.unscaledDeltaTime,0)
Time.unscaledDeltaTime 不受缩放影响的每帧间隔
练习:使用Text制作倒计时预制体
从02:00开始,最后10秒字体为红色,时间为00:00后停止
最后10秒字体为红色—>
Hierachy右键—>UI—>Text

引用using UnityEngine.UI;
If(second<=0)
txtTimer.color=Color.red;
时间为00:00后停止—>
If(second<=0)
CancelInvoke(“Timer”)//取消调用某个方法
思路:
1.查找组件引用
2.定义变量:秒
3.120—>02:00
119—>01:59
4.修改文本
5.如何每秒修改一次
*在Update每帧执行的方法中,个别语句实现指定间隔执行一次
方法一:Time.time
private float nextTime = 1;//下次修改时间
private void Update()
{
if (Time.time >= nextTime)
{
second--;
txtTimer.text = string.Format("{0:d2}:{1:d2}", second / 60, second % 60);
if (second <= 10)
txtTimer.color = Color.red;
//设置下次修改时间
nextTime = Time.time + 1;//每隔一秒执行一次
}
}
适合做发射子弹,按左键就发射,之后蓄力(等待时间)限制频率
方法二:Time.deltaTime
private float totalTime;//累计每帧的间隔
private void Update()
{
totalTime += Time.deltaTime;
if (totalTime >= 1)
{
second--;
txtTimer.text = string.Format("{0:d2}:{1:d2}", second / 60, second % 60);
totalTime = 0;
}
}
先等待后做事
方法三:InvokeRepeating()
//重复调用(被执行的方法名称,第一次执行时间,每次执行间隔)
void Start()
{
InvokeRepeating("Timer", 1, 1);
}
private void Timer()
{
second--;
txtTimer.text = string.Format("{0:d2}:{1:d2}", second / 60, second % 60);
}
Invoke(被执行的方法,开始调用的时间)
代码实现:
using System.Collections;
using System.Collections.Generic;
using UnityEngine ;
using UnityEngine.UI;
public class TimeDemo : MonoBehaviour
{
private Text txtTimer;
public int second = 120;
private float nextTime = 1;//下次修改时间
void Start()
{
txtTimer = this.GetComponent<Text>();
}
private void Update()
{
Timer1();
}
void Timer1()
{
if (Time.time >= nextTime)
{
second--;
txtTimer.text = string.Format("{0:d2}:{1:d2}", second / 60, second % 60);
if (second <= 10)
txtTimer.color = Color.red;
//设置下次修改时间
nextTime = Time.time + 1;
if(second<=0)
{
CancelInvoke("Timer");
}
}
}
}边栏推荐
猜你喜欢

耐克,体育运动龙头在消费复苏趋势中的“红与黑”

thingJS的使用
![ERROR: Could not install packages due to an OSError: [ Errno 2] No such file or directory: ***](/img/81/6f9b7d554e6a47e614107c799229d2.png)
ERROR: Could not install packages due to an OSError: [ Errno 2] No such file or directory: ***

聊一聊Promise

字节三面终上岸,这份热腾腾的面经,请收好「含免费资料」

Z-Wave CTT使用方法以及测试演示

Preparing transaction:done Verifying transaction:failed RemoveError:‘requests‘ is a dependency of **

fastjson反序列化漏洞区分版本号的方法总结

程序分析与优化 - 11 多分支分析

特征值和特征向量的求法
随机推荐
js二分查找伪代码
重写equals为什么要重写hashcode
02-回顾多线程
移掉K位数字[贪心思想 & 单调栈实现]
STL string
给即将毕业要走往程序员道路的10条建议(精彩配图)
Upupwank teak peel installation SSL certificate Guide
函数模板的系列操作( 详解 )
Leetcode 49. 字母异位词分组
北京华联BHG Mall持续发力,BHG DAY引领城市消费新热潮
STM32——定时器中断实验
数据库操作软件推荐
c语言指针与数组的深入理解
三种“榨干”企业装置服装ERP预算的情况
1.创建Prism项目
Bean的生命周期详解
Excel finds characters from the right and intercepts them
golang中的读写锁原理
双动点相对运动破解
Common network devices and network reference models, as well as common network layer protocols and data communication processes