模塊介紹
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 # 標籤為 "",進行名稱還原。
自動生成物件綁定代碼 (Hotkey: Shift+B, B: Bind)
命名規範使用 * 指向 TailName
- UIBase & SRBase
- _Node@XXX*Btn (以此類推)
- CPBase
- ~Node@XXX*Btn (以此類推)
自動綁定說明
自動綁定配置
預設組件綁定表 (可從 BindCodeSetting 中自行新增或修改 TailName 對應綁定組件類型)
Tail Name | Component Name | End Remove Count | End Plural Txt |
---|---|---|---|
Other | |||
Trans | Transform | 0 | es |
RectTrans | RectTransform | 0 | es |
Legacy | |||
Img | Image | 0 | s |
RawImg | RawImage | 0 | s |
Txt | Text | 0 | s |
Btn | Button | 0 | s |
Tgl | Toggle | 0 | s |
Sld | Slider | 0 | s |
ScrBar | Scrollbar | 0 | s |
ScrView | ScrollRect | 0 | s |
Drd | Dropdown | 0 | s |
Field | InputField | 0 | s |
TMP | |||
TmpTxt | TMP_Text | 0 | s |
TmpDrd | TMP_Dropdown | 0 | s |
TmpField | TMP_InputField | 0 | s |
Custom | |||
BtnPlus | ButtonPlus | 0 | es |
NodePool | NodePool | 0 | s |
自動綁定產生器的功能有方法類型的區分,如下:
- 自動 (Auto) [預設],自動儲存綁定內容至代碼中,將會自動 override OnAutoBind() 與調用。
- 手動 (Manual) [自選],手動將綁定內容複製至代碼中,將會自動 override OnAutoBind() 與調用。