模塊介紹
重要 注意 提醒Coding Style wiki
基本說明
核心模塊 (連動 AssetLoader 實現自動卸載),涵蓋遊戲主要物件製作,並且實現物件命名綁定功能。
- 遊戲窗體 (UIFrame, UI = User Interface),支持物件命名綁定。 底線開頭 _Node@XXX
- 場景資源 (SRFrame, SR = Scene Resource),支持物件命名綁定。 底線開頭 _Node@XXX
- Unity 場景 (USFrame, US = Unity Scene)
- 模板物件 (CPFrame, CP = Clone Prefab),支持物件命名綁定。 波浪開頭 ~Node@XXX
應用說明
UIFrame (User Interface)
用於管理窗體 Prefab,僅支持 UGUI,使用 UIManager 管理掛載 UIBase 的物件。
- 支持 UI 反切 (Reverse Changes)。
- 支持 UI 堆疊關閉 (Close Stack By Stack)。
- 支持 UI 凍結功能,避免 UI 動畫尚未完成期間,能夠被點擊觸發事件。
提醒 如需要製作 UI 動畫,可以在 ShowAnimation 跟 HideAnimation 覆寫執行相關過渡動畫 (DoTween, Animation...),並且一定要在完成 UI 動畫後,正確呼叫 animationEnd() 回調,才能正確解除 UI 凍結狀態。
提醒 額外還有 UI 的 MaskEvent,也可以通過 override 自定義事件。
UI 反切運用 (Reverse Changes) | UI 反切運用 (Reverse Changes) |
---|---|
UI 堆疊關閉運用 (Close Stack By Stack) | UI 堆疊關閉運用 (Close Stack By Stack) |
---|---|
SRFrame (Scene Resource)
用於管理場景 Prefab、功能 Prefab,使用 SRManager 管理掛載 SRBase 的物件。
USFrame (Unity Scene)
用於管理 Unity Scene,使用 USManager 管理 Unity 場景 (支持 AssetBundle)。
注意 使用 build# 前墜,將切換從 Build Settings -> Scenes In Build 加載。反之,則使用 AssetBundle。
CPFrame (Clone Prefab)
用於實例 Prefab 模板物件,使用 CPManager 管理掛載 CPBase 的 Prefab,主要用在加載模板物件,例如:物品圖示模板、信件訊息模板...等等,並且直接進行 GameObject.Destroy,會自動執行計數卸載。
提醒 CPManager 不進行 CPBase 的緩存處理。
常用方法說明
- OnCreate : 初始參數用。
- OnBind : 初始事件用。
- OnPreShow : 當有異步處理或者附屬物件控制時,可以在此處理。例如 : TopUI 附屬連動開啟 LeftUI & RightUI,那麼就可以在 TopUI 中的 OnPreShow 方法實現 Show LeftUI & RightUI。
- 提醒 不建議在 OnPreClose 時進行相關 Show 的處理,如果 有進行的話也沒關係,因為針對 CloseAll 的 API 有提供 disabledPreClose 參數開關。
- OnShow : 調用 Show 時,此方法會被激活,並且可以透過帶入的 object 進行數據傳送。
- OnClose : 調用 Close 時,此方法會被激活。
- OnRelease : 當物件被 Destroy 時,此方法會被激活。
初始順序說明
重要 OnCreate (Once) > OnAutoBind (Once) > OnBind (Once) > OnPreShow (EveryOpen) > OnShow (EveryOpen)。
物件綁定說明
- 透過 collector.GetNode("BindName") 返回取得綁定 GameObject (單一名綁定)。
- UIBase & SRBase 使用 _Node@XXX。
- CPBase 使用 ~Node@XXX。
- 透過 collector.GetNodes("BindName") 返回取得綁定 GameObject[] (同名多綁定,物件順序由上至下)。
- UIBase & SRBase 使用 _Node@XXX。
- CPBase 使用 ~Node@XXX。
- 透過 collector.GetNodeComponent<TComponent>("BindName") 返回取得綁定 TComponent (單一名綁定)。
- UIBase & SRBase 使用 _Node@XXX。
- CPBase 使用 ~Node@XXX。
- 透過 collector.GetNodeComponents<TComponent>("BindName") 返回取得綁定 TComponent[] (同名多綁定,物件順序由上至下)。
- UIBase & SRBase 使 用 _Node@XXX。
- CPBase 使用 ~Node@XXX。
自動生成停止綁定標籤 (Hotkey: Shift+E, E: End)
提醒 建議使用 Hotkey,不然使用 Right-Click 會執行多次 (實際上不影響自動生成),但這是 Unity Bug 官方不修復了。
能夠縮短 Runtime 在綁定的向下查找次數,時間複雜度為 O(N),N = StopEndIdx (如有大量節點物件建議使用)。
- 重要 如果有特殊使用 Transform.Find 查找子物件時,剛好子物件名稱有 # 標籤,可以無視,因為在 Runtime 時,會 Replace # 標籤為 "",進行名稱還原。