Unity3d C# Time.deltaTime的簡單介紹

Unity3d C# Time.deltaTime的簡單介紹

Time.deltaTime在unity3d的遊戲編程裏面使用比較頻繁,主要是用於解決一些遊戲場景中的某些需要隨着時間變化而改變狀態的物體。

通俗理解Time.deltaTime

先理解一點,Update()函數是逐幀執行,就是每顯示一幀,Update()函數裏的代碼都會執行一次,然而幀數的高低,就跟你的電腦配置有關係啦,所以逐幀執行就會存在一個問題,比如物體旋轉,物體的位移,在相同的時間內,如果幀數不同,前後的效果也會不同。比如第一次是10秒鐘執行了10幀,第二次是10秒執行了20幀,那麼第一次和第二次,物體最終的旋轉角度和位移前後是不一致的。爲了使物體的運行情況不受幀率影響,並且在相同的時間內,運行情況都相同,那麼就需要使用Time.deltaTime了。

文字舉例

void Update()
{
	//此處沒有使用Time.deltaTime
   	//意思爲每幀掛了該腳本的物體會旋轉10度
	this.transform.Rotate(new Vector3(0, 1, 0) * 10.0f);
}

上面↑代碼意思就是,掛了該腳本的物體,每一幀就旋轉10度,如果10秒執行了30幀,那麼10秒鐘該物體一共旋轉了300度。

void Update()
    {
		//此處使用了Time.deltaTime
		//意思爲每秒鐘掛了該腳本的物體會旋轉10度
		this.transform.Rotate(new Vector3(0, 1, 0) * 10.0f * Time.deltaTime);
    }

上面↑代碼的意思就是,掛了該腳本的物體,每秒鐘旋轉10度,到第10秒的時候,該物體就旋轉了100度。
並且你會發現,該物體旋轉的很平滑,給人很舒服的感覺,沒有使用Time.deltaTime的話,給人的感覺就比較生硬。

代碼舉例(儘量讓新手懂這個的用法)

在unity3d裏面創建一個C#腳本,命名爲test
以下代碼複製粘貼即可,要實現每秒鐘旋轉10度,只需要把每幀旋轉10度的代碼註釋掉即可,此處我都寫出來是爲了讓大家方便比對兩者的前後效果。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class test : MonoBehaviour
{
    // Update is called once per frame
    void Update()
    {
    	//需要哪行代碼,把另一行註釋掉即可
    	
    	//此處沒有使用Time.deltaTime
    	//意思爲每幀掛了該腳本的物體會旋轉10度
        this.transform.Rotate(new Vector3(0, 1, 0) * 10.0f);
		
		//此處使用了Time.deltaTime
		//意思爲每秒鐘掛了該腳本的物體會旋轉10度
		this.transform.Rotate(new Vector3(0, 1, 0) * 10.0f * Time.deltaTime);
    }
}

之後在unity3d界面內創建一個cube,再把該代碼拖拽至cube上,就能看見cube的旋轉啦,想要加強印象,兩種情況的代碼自己都要執行一次,看出兩者間的差別,下次使用的時候,可根據需要自行選擇是否使用Time.deltaTime噢~

該篇文章主要是寫給對Time.deltaTime這個用法一點都不懂的新手,方便新手能快速理解Time.deltaTime主要用法。

第一次寫文章,如有錯誤,歡迎批評指出~~謝謝啦!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章