跳到主要内容
版本: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 有提供 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() 与调用。