DreamAnswer
程式設計,遊戲開發
2012年9月30日 星期日
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 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..等等。
2012年7月31日 星期二
2012面試心得Part2
6.三貝德
地點:三重湯城園區
工作內容:幼教軟體遊戲開發
面試過程:這個算是以前同事在那邊工作,一直叫我去談看看,最後就去了,其實內容還是做遊戲,面試過程非常Free..連一般正式該跑的流程都不太有,所以很像去跟朋友聊天,其實對這份意願工作不高,加上裡面制度尚未完善,面式的當下就得到Offer,只是我最後還是決定考慮再三再回覆。
結果:我發給他們感謝卡,後續這家公司有一些做法讓我很不高興,或許是好意,也不是我之前同事做的,但是我想這間公司以後打死也不會去上班吧XDDDD。
地點:三重湯城園區
工作內容:幼教軟體遊戲開發
面試過程:這個算是以前同事在那邊工作,一直叫我去談看看,最後就去了,其實內容還是做遊戲,面試過程非常Free..連一般正式該跑的流程都不太有,所以很像去跟朋友聊天,其實對這份意願工作不高,加上裡面制度尚未完善,面式的當下就得到Offer,只是我最後還是決定考慮再三再回覆。
結果:我發給他們感謝卡,後續這家公司有一些做法讓我很不高興,或許是好意,也不是我之前同事做的,但是我想這間公司以後打死也不會去上班吧XDDDD。
2012年6月26日 星期二
C++ Const用法
C++的const關鍵字有很多種用法,而善加利用const,可以改善程式的封裝安全性。
下列介紹4種很基礎的const 用法:
1: int b = 123;2: //1. 針對指標所儲存的常數做const的修飾。3: //(*a) = 3 錯誤的操作,但是可以針對所指向的記憶體位址做操作。4: //例如: a++ 在這邊是可以的。5: const int* a = &b;6: //2.同上7: int const *a = &b;8: //3.針對指標所指向的記憶體位址做const的修飾。9: //a++ 錯誤的操作,但是可以針對所儲存的常數做操作。10: //例如 (*a) = 3 在這邊是可以的。11: int* const a = &b;12: //4.結合1、2跟3,同時對常數以及記憶體位址做const的修飾13: const int* const a = &b;
另外,const也可以用來修飾function。
Strategy 策略模式
何謂策略模式:
定義各別的演算法並將其封裝起來,讓他們之間可以互相替換,此模式讓演算法的變動,不會影響使用演算法的程式。
由上面的UML圖可以得知Strategy類別只是一個演算法介面,而ConcreteStrategyA、B、C是真正實作的演算法內容,而Context是真正使用演算法的類別。
從上面的UML圖我們更可以發現兩個重點:
※ 寫程式是針對介面撰寫,而不是針對實踐方式。
※ 將程式中可能需要變動之處,取出並封裝起來,以後便可以輕易低擴充此部分,而不影響不需要更動的其他部分。
在未來我們可以增加ConcreteStrategyD,E,F而不會去影響原有的程式功能。
初談設計模式
訂閱:
文章 (Atom)