模块介绍
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 # 标签为 "",进行名称还原。