最近在做乙個小demo,發現有很多地方需要延時呼叫乙個方法,或者是一段邏輯才能實現功能。總結起來我感覺最常用的有以下幾個。
1.定義 timecounter 最簡單的一種
float timecounter = 0; //定義乙個時間計時器
private void update()
}
這種寫法雖然最為方便,但卻要一直在update中實時呼叫,當然你也可以加乙個bool,控制流程,但仍需要時時刻刻去做判斷。不是一種好的寫法。如果只是為了實現一些簡單的功能,這種寫法還是挺好用的,簡單粗暴。
2.invoke 延時呼叫
private void start()
private void todo()
這種寫法也挺簡單的,直接定義好邏輯然後在你想要呼叫的地方,直接 invoke 就行了,但是有個問題,邏輯必須要額外的封裝到乙個方法中,且呼叫的時候需要通過方法的 字串名稱呼叫的。
3. coroutines 協程
//假如在遊戲開始時,我需要延時10s做一件事情
private void start()
ienumerator todo()
startcoroutine用來開啟協程,stopcoroutine用來終止協程,注意引數必須是1⃣️ ienumerator 型別的 方法字串名稱 ,如上**所示。2⃣️還可以這樣寫 startcoroutine(todo()); 但是這種方式 終止協程stopcoroutine(todo());有點不太好使,停不下來 ,原因還在尋找中。
這種寫法很實用,而且隨時開啟並隨時終止它,易於控制使用靈活。但是邏輯仍然需要額外封裝,方法多了略微會降低**的可讀性。而且不停的 new waitforscond ,在優化時也是乙個需要處理的很大的消耗項。
4.timemanager
using system.collections;
using system.collections.generic;
using unityengine;
using system;
//建立時間 timer 類
public class timer
public timer(float time, action action) //構造方法賦值
public void update(float dt) //提供乙個公開的 update 方法 用來計時
}}//時間管理器。用來管理 timer 類例項化出來的物件
public class timemanager
return instance;}}
listtimelist = new list(); // 建立乙個鍊錶 用來儲存 timer 物件
//invoke 公開方法 當外界呼叫時 傳入 timer:需要延時的時間。 action:需要執行的事件
public void invoke(float timer, action action)
//提供給外界乙個 update 方法需要實時呼叫
public void update(float dt)}}
//提供給外界乙個清空 鍊錶的 方法
public void clear()
}
自己實現乙個timemanager類來管理timer物件,當事件執行結束後,該事件所對應的timer物件也被移除很方便。在使用時需要在乙個遊戲管理器中的update方法中呼叫一下 timemanager.instance.update(time.deltatime);然後當需要延時呼叫時,可以像方法2那樣將方法封裝起來然後 invoke(10,todo); 也可以使用lambda表示式 invoke(10,()=>); 的方式來實現。
還可以進一步實現 延時重複呼叫方法 invokerepeat()
,持續時間呼叫方法continueexecute() ,
等;還可以進一步擴充套件timer 物件的型別,使之在不同的遊戲狀態下,執行不同的延時事件。可擴充套件性很高,配合遊戲管理器來使用很方便。
個人見解,如有錯誤,敬請指正。
管理感悟 時間管理
管理感悟 時間管理 栁鯤鵬2017 12 01 關鍵字 管理 時間管理 簡介 介紹如何進行時間管理,做好工作。目錄為什麼我這麼忙,事情還沒搞好 1 重要與緊急的關係 2 維護每日工作列表 2 對重點的判斷 3 學會時間管理是很難的 3 為什麼我這麼忙,事情還沒搞好 每個人都說自己很忙。是真的忙嗎?1...
我的時間管理
時間管理不僅是心態問題,也是技巧問題。時間沒有管好的原因是當事人沒有去管,有些人認為用了時間管理工具就是時間管理,但最後還是以 計畫趕不上變化 為理由而放棄,還以為是工具不靈。工具是我們自己掌控的,合理安排與有效的執行才能使時間得到很好的管理。如果我們把時間安排成下面這樣,將會出現什麼問題呢?周一你...
我的時間管理
現狀網際網路這麼發達,資訊源非常之多,看什麼資訊一定要有選擇,不然就是湮沒在資訊的海洋之中,時間就一點點被時間竊賊偷走了,但是你全然不知。你可能會覺得今天好忙,自己的時間總是不夠用,但是股神巴菲特每天都有大量的時間用於思考,難道他不忙嗎?我認為時間就像是拿在自己手上的硬幣一樣,數量有限,花出去的時候...