*最後更新時間2016/05/30
Time.timeScale 是Unity中的方法,用來控制遊戲進行速度,
設定為1.0時為正常時間,0.0時為完全停止,
可以使用這個方法來設定遊戲運行的快慢或暫停的程式碼腳本。
本文將教學:
遊戲暫停
遊戲慢速
遊戲加速
----------------------------------------------------------------------------------------------------------
1.這裡簡單用三個Cylinder來講解。
綠色使用程式碼,會依時間旋轉,
紅色加了Rigidbody,會往下掉,
藍色使用動畫系統,會依時間旋轉(動畫系統非本教學重點故省略作法)。
提供綠色Cylinder的程式碼:
void Update () { gameObject.transform.Rotate(new Vector3(0f, 0f, 2f)); }
2.新增四個UI Button,分別為正常速度、暫停、慢速、加速。
3.新增C#腳本開始撰寫程式碼如下,自訂函式,待會給按鈕使用。
4.把程式碼腳本掛在MainCamera上
5.選取四個按鈕,按下On Click()右下角的加號,
會出現None欄位。
6.把MainCamera掛在None欄位。
7.現在個別選擇按鈕,點選No Function,
可以選擇程式碼腳本與自訂函式。
把對應的按鈕對上對應的函式。

8.執行結果。

由上圖可見,加了Rigidbody的物件與動畫系統製作的物件會受到Time.timeScale影響
而由程式碼所控制的物件不受Time.timeScale影響。
若想讓程式碼所控制的物件也受Time.timeScale影響,
可以利用判別式來實現,例如:
if (Time.timeScale == 1)
{ gameObject.transform.Rotate(new Vector3(0f, 0f, 2f)); }
else if (Time.timeScale == 0)
{ gameObject.transform.Rotate(new Vector3(0f, 0f, 0f)); }
else if (Time.timeScale == 0.2f)
{ gameObject.transform.Rotate(new Vector3(0f, 0f, 0.4f)); }
else if (Time.timeScale == 3)
{ gameObject.transform.Rotate(new Vector3(0f, 0f, 6f)); }
本教學結束。