跳到主要内容
版本:v3

模块介绍

重要 注意 提醒

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 有提供 disableOnPreClose 参数开关。
  • 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 (以此类推)
    • _Node@XXX*Btn*Img*Trans (以此类推,支持多个 * 指向多 TailName)
  • CPBase
    • ~Node@XXX*Btn (以此类推)
    • ~Node@XXX*Btn*Img*Trans (以此类推,支持多个 * 指向多 TailName)

自动绑定说明​

自动绑定配置​

默认组件绑定表 (可从 CodeBindingSettings 中自行新增或修改 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() 与调用。