前篇介紹的是Time.time與Time.deltaTime,本篇則是介紹有關時間縮放及停止的Time.timeScale。
Time.timeScale
- timeScale是一種返回float數據類型的static屬性,同時具有get與set屬性
- 功能主要控制時間的縮放,可以用來暫停、撥放、加快、變慢等效果
範例:觀念
public void PlayandPause() { //按鈕按一下撥放,再按一下暫停 //原形 if (Time.timeScale == 1.0f) { Debug.Log("Pause-遊戲進行時間為:" + Time.time + "秒"); Time.timeScale = 0.0f; } else if (Time.timeScale == 0.0f) { Debug.Log("Play-遊戲進行時間為:" + Time.time + "秒"); Time.timeScale = 1.0f; } //衍生 // if (Time.timeScale == 1.0f) // { // Debug.Log("Pause-遊戲進行時間為:" + Time.time + "秒"); // Time.timeScale = 0.2f; // } // else // { // Debug.Log("Play-遊戲進行時間為:" + Time.time + "秒"); // Time.timeScale = 1.0f; // } }
範例:完整程式碼
using UnityEngine; using System.Collections; using UnityEngine.UI; public class CodingSample : MonoBehaviour { public float AngleSpeed; public float Speed; public Text messageLog; public Text messageLog2; int[] bb = new int[5] { 0, 54, 72, 12, 99 }; void Start() { messageLog.text = "Play"; messageLog2.text = "遊戲已進行:" + 0 + "秒"; } // Update is called once per frame void Update() { messageLog2.text = "遊戲已進行:" + Time.time + "秒"; transform.Rotate(Vector3.up, Time.deltaTime * AngleSpeed); transform.position += new Vector3(0, Time.deltaTime * Speed, 0);//移動方法(1) } public void PlayandPause() { if (Time.timeScale == 1.0f) { Debug.Log("Pause-遊戲進行時間為:" + Time.time + "秒"); messageLog.text = "Pause"; Time.timeScale = 0.0f; } else if (Time.timeScale == 0.0f) { Debug.Log("Play-遊戲進行時間為:" + Time.time + "秒"); messageLog.text = "Play"; Time.timeScale = 1.0f; } } }
執行結果: