簡單的時間管理器

2021-09-09 09:10:43 字數 2069 閱讀 6938

最近在做乙個小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...

我的時間管理

時間管理不僅是心態問題,也是技巧問題。時間沒有管好的原因是當事人沒有去管,有些人認為用了時間管理工具就是時間管理,但最後還是以 計畫趕不上變化 為理由而放棄,還以為是工具不靈。工具是我們自己掌控的,合理安排與有效的執行才能使時間得到很好的管理。如果我們把時間安排成下面這樣,將會出現什麼問題呢?周一你...

我的時間管理

現狀網際網路這麼發達,資訊源非常之多,看什麼資訊一定要有選擇,不然就是湮沒在資訊的海洋之中,時間就一點點被時間竊賊偷走了,但是你全然不知。你可能會覺得今天好忙,自己的時間總是不夠用,但是股神巴菲特每天都有大量的時間用於思考,難道他不忙嗎?我認為時間就像是拿在自己手上的硬幣一樣,數量有限,花出去的時候...