Unity—常用API(续Time类)

今天整理了Time类!

+一张很有意思的理解API的图

(此图灵感来源于 如何理解API,API 是如何工作的_仁杰兄的博客-CSDN博客_api

 

目录

Time

练习:使用Text制作倒计时预制体

*在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");

            }

        }

}

}
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity3D中常用API包括Component、Transform、GameObject、Object和Time等。\[1\]这些API可以用于处理游戏对象的组件、变换、实例化和销毁等操作。例如,可以使用Component来获取和管理游戏对象的组件,使用Transform来控制游戏对象的位置、旋转和缩放,使用GameObject来创建、查找和销毁游戏对象,使用Object来处理资源的加载和释放,使用Time来获取游戏的时间信息。此外,还有一些常见的API函数,如Instantiate函数用于实例化预制件,Start函数和Update函数用于处理游戏对象的初始化和更新等。\[2\]\[3\]这些API和函数是Unity开发中经常使用的工具,可以帮助开发者实现各种功能和效果。 #### 引用[.reference_title] - *1* [Unity3D数字孪生笔记——Unity常用API篇](https://blog.csdn.net/Lcl_huolitianji/article/details/120875486)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Unity3D常用API](https://blog.csdn.net/u011360242/article/details/77046732)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [【Unity 3D】常见API的讲解以及在C#脚本中的执行(附源码)](https://blog.csdn.net/jiebaoshayebuhui/article/details/128510864)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值