Skip to main content
Version: v2 (Deprecated)

模塊介紹

重要 注意 提醒

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 NameComponent NameEnd Remove CountEnd Plural Txt
Other
TransTransform0es
RectTransRectTransform0es
Legacy
ImgImage0s
RawImgRawImage0s
TxtText0s
BtnButton0s
TglToggle0s
SldSlider0s
ScrBarScrollbar0s
ScrViewScrollRect0s
DrdDropdown0s
FieldInputField0s
TMP
TmpTxtTMP_Text0s
TmpDrdTMP_Dropdown0s
TmpFieldTMP_InputField0s
Custom
BtnPlusButtonPlus0es
NodePoolNodePool0s

自動綁定產生器的功能有方法類型的區分,如下:

  • 自動 (Auto) [預設],自動儲存綁定內容至代碼中,將會自動 override OnAutoBind() 與調用。

  • 手動 (Manual) [自選],手動將綁定內容複製至代碼中,將會自動 override OnAutoBind() 與調用。