最近工作实在是太忙了,没办法认真写博客,但是还是要好好记录下日常的学习。
需求
各类游戏中都大量运用到计时功能,不管是直接显示的在前端UI,还是后台运行。
思路
Unity中提供了Time类可以方便的进行时间上的获取,下面的例子中,我对其进行的简单的封装,能够方便的运用到各类型的游戏中。不少游戏中同时还提供了加速,暂停等等功能,unity中的TimeScale属性可以很方便的实现这些功能。
实现
计时的功能实现起来还是比较的方便。unity的Time.time能个距离游戏开始的时间,利用Mathf.FloorToInt方法取整,就等到了距离游戏开始多少秒,简单的写了两个时间转换的方法。
1 void OnGUI() 2 { 3 GUI.skin = clockGuiSkin; 4 NowTime = TimeFormatBase(Mathf.FloorToInt(Time.time)); 5 GUI.Label(new Rect(screenWidth*0.8f, screenHeight*0.05f, 120f, 30f), NowTime); 6 7 if(GUI.Button(new Rect(10,10,100,30),"暂停")) 8 { 9 Debug.Log("Stop"); 10 Stop(); 11 } 12 if (GUI.Button(new Rect(10, 60, 100, 30), "加速")) 13 { 14 timeScale = Mathf.Clamp(timeScale*2,0,100); 15 16 SetTimeScale(timeScale); 17 Debug.Log("Quick:" + timeScale); 18 } 19 }