Skip to main content

[Unity] erinylin.lazylib - fsm2.0

怕上篇文章越改越長,就直接開新的貼。

erinylin_fsm2.0.unitypackage

A finite-state machine (FSM) v2.0, use ScriptObject to preset states.

有限狀態機更新版。本人有強迫症,喜歡將工具不斷改寫。本版本主要是學習到 ScriptableObject and EditorGUI 時改寫的。


Feature:

  • Change the State class to ScriptableObject. And rewrite FSMSystem class. 將 State class 改成 ScriptableObject, 並修正了 FSMSystem class 的一些函式。
  • Export the State of Constant class by one click. 重點來了,建立好的 StateScriptableObject 可以直接點選 Export 按鈕建立其常數類別檔!

State ScriptableObject can create by Editor Menu: Assets / Create / Lazylib / StateScriptableObject



懶人守則: 能自動化的就不用手打

Exports the State of Constant class file by one click.



Unity Editor 相關 GUI API 非常方便好用,可以實現客製化組件編輯器,也可以理解為什麼 Unity Asset Store 如此蓬勃發展了。組件設計的好,製作遊戲基本上只需要拖拉修改設定即可。CoronaSDK 這點就很可惜,即使現在有 GUI 編輯器,但是因為限制還是很多,所以彈性並不大...不過 CoronaSDK 還是有它的優點,畢竟無痛入門這點就蠻不錯,而 Unity 就需要較長的學習曲線。所以挑選製作工具其實還是看專案需求而定,並沒有哪個開發工具更好。

Comments

Popular posts from this blog

[Swift3] weak 與 unowned 關鍵字

雖然在 Swift 中看起來"很像"是不需要煩惱內存管理的問題,不過實際上它還是遵循著自動引用計數 (ARC) 的規則,當一個物件沒有被其他對象引用時會自動被銷毀,如果三魂七魄沒有完全回位的話,就會有個靈體留在現世的空間裡,最經典的範例如下: 閉包(Closure)引用 classClassA { typealias Complete = ()->() var name : String var onComplete : Complete? init(_ name: String){ self.name = name print("Hello I am \(self.name)") onComplete = { print("\(self.name): onComplete!") // --> 閉包引用 self, 計數 + 1 } } deinit { print("deinit: \(self.name)") } } var a : ClassA? = ClassA("A") // --> 引用計數 + 1 a = nil // 2-1 = 1 還剩下 1 所以沒辦法銷毀 ---output------- Hello I am A 由於這邊的 onComplete 宣告為 Optional, 正確的做法要連同 onComplete 一起刪除才可以被回收,若不是 Optional 則會進入無法回收狀態: var b : ClassA? = ClassA("B") b?.onComplete = nil // --> 還好是 Optional 可以設成 nil 計數 - 1 b = nil // 計數 = 0 所以被回收 ---output------- Hello I am B deinit: B 但是做人不需要煩惱太多,這時候就出動 unowned 關鍵字讓物件可以順利被回收: onComplete = { [unowned self] in print...

[書評] 拖延心理學:為什麼我老是愛拖延?是與生俱來的壞習慣,還是身不由己?

作者: Jane B. Burka & Lenora M . Yuen 推薦指數 ★★★★★ 有時候,只是想了解事情發生原因而不是尋求解法 在這邊不是要講這本書的內容,而是想聊它對我的影響。