網頁

2012年8月16日 星期四

Unity Editor Mode的Update and Timer

 

在之前公司使用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 EditorTimer  
  6: {
  7: 
  8:     private static double lastTime = 0;
  9:     private static double deltaTime = 0;
 10:     public static double GetDeltaTime
 11:     {
 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 frame
 22:     static void Update () 
 23:     {
 24:         deltaTime = EditorApplication.timeSinceStartup - lastTime;
 25:         lastTime = EditorApplication.timeSinceStartup;
 26:         //Debug.Log(deltaTime);
 27:     }
 28: }


這樣我們只需要在Editro Mode的時候去呼叫EditorTimer.GetDeltaTime


就可以取得我們所需要的時間,當然也可以再擴充其他的功能,例如TotalTime..等等。

沒有留言:

張貼留言