在之前公司使用Unity開發某項專案的時候,由於要擴充Unity原有的EditorWindows功能去做一個編輯器,由於需要Timer的功能,但是在Unity的Editor Mode的時候,去呼叫Time.deltaTime卻永遠都是0。因為Time的功能只會在Play Mode的時候才會運行。
這時候我們只好自己去實做一個Timer。做法如下
1: using UnityEditor;2: using UnityEngine;3:4: [InitializeOnLoad]5: public class EditorTimer6: {7:8: private static double lastTime = 0;9: private static double deltaTime = 0;10: public static double GetDeltaTime11: {12: get { return deltaTime; }13: }14:15: static EditorTimer()16: {17: lastTime = EditorApplication.timeSinceStartup;18: //將Update這個function加入EditorApplication的Update中19: EditorApplication.update += Update;20: }21: // Update is called once per frame22: static void Update ()23: {24: deltaTime = EditorApplication.timeSinceStartup - lastTime;25: lastTime = EditorApplication.timeSinceStartup;26: //Debug.Log(deltaTime);27: }28: }
這樣我們只需要在Editro Mode的時候去呼叫EditorTimer.GetDeltaTime
就可以取得我們所需要的時間,當然也可以再擴充其他的功能,例如TotalTime..等等。