UIModule¶
- 种类:
class - 命名空间:
Runestone.AesirModules - 程序集:
Runestone.AesirModules
继承链: System.Object → UnityEngine.Object → UnityEngine.Component → UnityEngine.Behaviour → UnityEngine.MonoBehaviour → Sirenix.OdinInspector.SerializedMonoBehaviour → Runestone.AesirArchitecture.AesirMonoBehaviour → UIModule
实现接口: Sirenix.Serialization.ISupportsPrefabSerialization,UnityEngine.ISerializationCallbackReceiver
声明¶
[DisallowMultipleComponent]
[DefaultExecutionOrder]
public class UIModule : Runestone.AesirArchitecture.AesirMonoBehaviour,
Sirenix.Serialization.ISupportsPrefabSerialization,
UnityEngine.ISerializationCallbackReceiver
UI 管理器(MonoBehaviour 单例)。 负责面板生命周期管理,UI 根节点构建委托给 UIRoot。
备注
是否加入 DontDestroyOnLoad 场景由序列化字段 dontDestroyOnLoad 控制, 仅在本物体为根物体(场景预放置)时生效;运行时自动创建的实例挂载在 AesirModules 宿主下, 实际是否 DDOL 跟随宿主的 dontDestroyOnLoad 决策。
构造方法¶
| 名称 | 描述 |
|---|---|
UIModule() |
— |
UIModule()¶
属性¶
声明的属性
| 名称 | 描述 |
|---|---|
UICamera |
UI 专用相机。正交、depth=1、cullingMask=含 UI 层 (5) 和 TransparentFX 层 (1)。 |
MaskMode |
窗口蒙版调度模式。初值来自 UIModuleConfigSO(在 Project 窗口编辑配置资产即可调整, 不要求预放置本组件);运行时可切换,切换后立即重算全部窗口蒙版。 |
Instance |
全局单例入口。 优先在已加载场景中查找预放置的实例;未找到时在 AesirModules(DDOL)下创建子物体。 |
继承的属性
| 名称 | 描述 | 声明类型 |
|---|---|---|
destroyCancellationToken |
— | MonoBehaviour |
gameObject |
— | Component |
hideFlags |
— | Object |
transform |
— | Component |
enabled |
— | Behaviour |
isActiveAndEnabled |
— | Behaviour |
runInEditMode |
— | MonoBehaviour |
useGUILayout |
— | MonoBehaviour |
name |
— | Object |
tag |
— | Component |
animation |
— | Component |
audio |
— | Component |
camera |
— | Component |
collider |
— | Component |
collider2D |
— | Component |
constantForce |
— | Component |
hingeJoint |
— | Component |
light |
— | Component |
networkView |
— | Component |
particleSystem |
— | Component |
renderer |
— | Component |
rigidbody |
— | Component |
rigidbody2D |
— | Component |
UICamera¶
UI 专用相机。正交、depth=1、cullingMask=含 UI 层 (5) 和 TransparentFX 层 (1)。
备注
UIRoot 缺失或已销毁时返回 null:显式 == null 走 Unity 假 null 语义, 避免 ?. 绕过 Object 的重载 == 而返回已销毁对象的相机。
MaskMode¶
窗口蒙版调度模式。初值来自 UIModuleConfigSO(在 Project 窗口编辑配置资产即可调整, 不要求预放置本组件);运行时可切换,切换后立即重算全部窗口蒙版。
Instance¶
全局单例入口。 优先在已加载场景中查找预放置的实例;未找到时在 AesirModules(DDOL)下创建子物体。
方法¶
声明的方法
| 名称 | 描述 |
|---|---|
ShowPanel(Type, object, string) |
打开面板。已存在(激活或停用)则置顶并重新 Show;不存在则实例化并驱动生命周期。 新面板以停用状态实例化,按 挂层 → Initialize → Show 顺序驱动, Awake/OnEnable 推迟到 Show 内部激活时才触发,保证 OnEnable 可安全访问 OnInit 之后才有值的引用。 面板注册表以实例的实际类型为键:以基类类型调用且注册表已存在派生实例时记录错误并返回 null (不会重复实例化);需以实际类型(或面板内 HideSelf)操作。 面板所属层的 Canvas 缺失(UIRoot 层级结构性损坏)时记录错误并中止本次显示,不保留半挂载实例。 |
GetWindow(Type) |
获取已注册的窗口实例。键为窗口实例的实际类型;精确未命中时静默返回 null, 仅当注册表存在派生实例(疑似以基类类型误查)时记录键语义警告。 |
OpenWindow(Type, object, string) |
打开窗口。不存在(激活或停用)则实例化并驱动生命周期;已存在则置顶并重新 Show。 新窗口以停用状态实例化,按 挂载 UIRoot → 接线根 Canvas(相机/渲染模式/统一缩放配置/sortingOrder)→ 递归设 UI 层 → Initialize → Show 顺序驱动; Awake/OnEnable 推迟到 Show 内部激活时才触发(与面板同一契约)。 窗口注册表以实例的实际类型为键:以基类类型调用且注册表已存在派生实例时记录错误并返回 null; 根节点缺少 Canvas 组件(违反 Canvas 根约定)时记录错误并中止,不保留半挂载实例。 |
GetPanel() |
获取已注册的面板实例。键为面板实例的实际类型;精确未命中时静默返回 null, 仅当注册表存在派生实例(疑似以基类类型误查)时记录键语义警告。 |
OpenWindow(object, string) |
打开窗口(泛型)。不存在则实例化并驱动生命周期;已存在则置顶并重新 Show。 |
ShowPanel(object, string) |
打开面板(泛型)。已存在则置顶并重新 Show;不存在则实例化并驱动生命周期。 |
ShowPanel(TPayload, string) |
打开面板(泛型 + 强类型 payload)。payload 以泛型参数传递,调用侧获得编译期类型约束; 面板内部仍经 Show(object) 接收后按需转换(运行时类型安全仍由面板内转换保证)。 |
ContainPrefabAsset() |
— |
ContainWindowPrefabAsset(Type) |
窗口类型对应的预制体是否已注册(与面板共用同一份预制体注册表)。 |
PrewarmPanel(Type, string) |
预热面板。预实例化并隐藏面板,后续 ShowPanel(Type, object, string) 直接复用, 避免首次打开时的实例化卡顿。 面板以停用状态实例化,预热期不触发 Awake/OnEnable,待首次 Show 时再激活。 |
PrewarmPanel(string) |
预热面板(泛型)。预实例化并隐藏面板,后续 ShowPanel{T}(object, string) 直接复用, 避免首次打开时的实例化卡顿。 |
PrewarmWindow(Type, string) |
预热窗口。预实例化并隐藏窗口,后续 OpenWindow(Type, object, string) 直接复用, 避免首次打开时的实例化卡顿。 窗口以停用状态实例化,预热期不触发 Awake/OnEnable,待首次打开时再激活(与面板同一契约)。 |
CloseWindow(Type) |
关闭窗口。按 DestroyOnHide 决定销毁或隐藏; 键语义与幂等约定与 HidePanel(Type) 一致。 |
CloseWindow() |
关闭窗口(泛型)。按 DestroyOnHide 决定销毁或隐藏。 |
HidePanel(Type) |
关闭面板。按 DestroyOnHide 决定销毁或隐藏。 注册表以面板实例的实际类型为键:以基类类型调用且注册表已存在派生实例时记录警告提示键语义; 无关联实例时按幂等语义静默返回。已停用(或未显示)的面板重复关闭同样为幂等操作。 |
HidePanel() |
关闭面板(泛型)。按 DestroyOnHide 决定销毁或隐藏。 |
PrewarmAll(Action) |
预热所有已注册的面板,逐帧实例化以分摊性能开销。 |
RegisterAssetLoader(IUIAssetLoader) |
替换默认的面板资源加载器。 |
RegisterPanelPrefab(Type, GameObject) |
注册面板类型对应的预制体。 |
RegisterPanelPrefab(GameObject) |
注册面板类型对应的预制体(泛型版本)。 |
RegisterWindowPrefab(Type, GameObject) |
注册窗口类型对应的预制体(与面板共用同一份预制体注册表,类型系统天然分桶)。 |
Get() |
— |
GetWindow() |
静态快捷:获取已注册的窗口实例。 |
Open(object, string) |
静态快捷:打开窗口。 |
Show(object, string) |
静态快捷:打开面板。 |
Show(TPayload, string) |
静态快捷:打开面板(强类型 payload 版本,同 ShowPanel{TPanel, TPayload}(TPayload, string))。 |
ContainPrefab() |
— |
ContainWindowPrefab() |
静态快捷:窗口类型对应的预制体是否已注册。 |
Prewarm(string) |
静态快捷:预热面板。 |
PrewarmWindow(string) |
静态快捷:预热窗口。 |
Close() |
静态快捷:关闭窗口。 |
Hide() |
静态快捷:关闭面板。 |
RegisterPrefab(GameObject) |
静态快捷:注册面板预制体。 |
RegisterPrefab(T) |
静态快捷:注册面板预制体。 |
RegisterWindowPrefab(GameObject) |
静态快捷:注册窗口类型对应的预制体。 |
继承的方法
| 名称 | 描述 | 声明类型 |
|---|---|---|
GetComponent(Type) |
— | Component |
GetComponent(string) |
— | Component |
GetComponentInChildren(Type) |
— | Component |
GetComponentInChildren(Type, bool) |
— | Component |
GetComponentInParent(Type) |
— | Component |
GetComponentInParent(Type, bool) |
— | Component |
GetComponents(Type) |
— | Component |
GetComponentsInChildren(Type) |
— | Component |
GetComponentsInChildren(Type, bool) |
— | Component |
GetComponentsInParent(Type) |
— | Component |
GetComponentsInParent(Type, bool) |
— | Component |
StartCoroutine(IEnumerator) |
— | MonoBehaviour |
StartCoroutine(string) |
— | MonoBehaviour |
StartCoroutine(string, object) |
— | MonoBehaviour |
GetComponent() |
— | Component |
GetComponentInChildren() |
— | Component |
GetComponentInChildren(bool) |
— | Component |
GetComponentInParent() |
— | Component |
GetComponentInParent(bool) |
— | Component |
GetComponents() |
— | Component |
GetComponentsInChildren() |
— | Component |
GetComponentsInChildren(bool) |
— | Component |
GetComponentsInParent() |
— | Component |
GetComponentsInParent(bool) |
— | Component |
GetType() |
— | object |
CompareTag(string) |
— | Component |
IsInvoking() |
— | MonoBehaviour |
IsInvoking(string) |
— | MonoBehaviour |
TryGetComponent(Type, ref Component) |
— | Component |
TryGetComponent(ref T) |
— | Component |
GetComponentIndex() |
— | Component |
GetInstanceID() |
— | Object |
Equals(object) |
— | Object |
GetHashCode() |
— | Object |
ToString() |
— | Object |
BroadcastMessage(string) |
— | Component |
BroadcastMessage(string, SendMessageOptions) |
— | Component |
BroadcastMessage(string, object) |
— | Component |
BroadcastMessage(string, object, SendMessageOptions) |
— | Component |
CancelInvoke() |
— | MonoBehaviour |
CancelInvoke(string) |
— | MonoBehaviour |
GetComponents(Type, List<Component>) |
— | Component |
GetComponents(List<T>) |
— | Component |
GetComponentsInChildren(List<T>) |
— | Component |
GetComponentsInChildren(bool, List<T>) |
— | Component |
GetComponentsInParent(bool, List<T>) |
— | Component |
Invoke(string, float) |
— | MonoBehaviour |
InvokeRepeating(string, float, float) |
— | MonoBehaviour |
SendMessage(string) |
— | Component |
SendMessage(string, SendMessageOptions) |
— | Component |
SendMessage(string, object) |
— | Component |
SendMessage(string, object, SendMessageOptions) |
— | Component |
SendMessageUpwards(string) |
— | Component |
SendMessageUpwards(string, SendMessageOptions) |
— | Component |
SendMessageUpwards(string, object) |
— | Component |
SendMessageUpwards(string, object, SendMessageOptions) |
— | Component |
StopAllCoroutines() |
— | MonoBehaviour |
StopCoroutine(Coroutine) |
— | MonoBehaviour |
StopCoroutine(IEnumerator) |
— | MonoBehaviour |
StopCoroutine(string) |
— | MonoBehaviour |
MemberwiseClone() |
— | object |
Finalize() |
— | object |
OnAfterDeserialize() |
— | SerializedMonoBehaviour |
OnBeforeSerialize() |
— | SerializedMonoBehaviour |
StartCoroutine_Auto(IEnumerator) |
— | MonoBehaviour |
ShowPanel(Type, object, string)¶
打开面板。已存在(激活或停用)则置顶并重新 Show;不存在则实例化并驱动生命周期。 新面板以停用状态实例化,按 挂层 → Initialize → Show 顺序驱动, Awake/OnEnable 推迟到 Show 内部激活时才触发,保证 OnEnable 可安全访问 OnInit 之后才有值的引用。
面板注册表以实例的实际类型为键:以基类类型调用且注册表已存在派生实例时记录错误并返回 null (不会重复实例化);需以实际类型(或面板内 HideSelf)操作。
面板所属层的 Canvas 缺失(UIRoot 层级结构性损坏)时记录错误并中止本次显示,不保留半挂载实例。
参数
| 名称 | 类型 | 说明 |
|---|---|---|
panelType |
Type |
面板类型。 |
payload |
object |
传递给 OnShow 的数据。 |
path |
string |
可选的资源路径。注册表中不存在时通过加载器加载,加载后自动注册到注册表。 |
返回值
| 类型 | 说明 |
|---|---|
IUIPanel |
面板实例,失败返回 null。 |
GetWindow(Type)¶
获取已注册的窗口实例。键为窗口实例的实际类型;精确未命中时静默返回 null, 仅当注册表存在派生实例(疑似以基类类型误查)时记录键语义警告。
参数
| 名称 | 类型 | 说明 |
|---|---|---|
windowType |
Type |
窗口类型。 |
返回值
| 类型 | 说明 |
|---|---|
IUIWindow |
窗口实例,未注册返回 null。 |
OpenWindow(Type, object, string)¶
打开窗口。不存在(激活或停用)则实例化并驱动生命周期;已存在则置顶并重新 Show。 新窗口以停用状态实例化,按 挂载 UIRoot → 接线根 Canvas(相机/渲染模式/统一缩放配置/sortingOrder)→ 递归设 UI 层 → Initialize → Show 顺序驱动; Awake/OnEnable 推迟到 Show 内部激活时才触发(与面板同一契约)。
窗口注册表以实例的实际类型为键:以基类类型调用且注册表已存在派生实例时记录错误并返回 null; 根节点缺少 Canvas 组件(违反 Canvas 根约定)时记录错误并中止,不保留半挂载实例。
参数
| 名称 | 类型 | 说明 |
|---|---|---|
windowType |
Type |
窗口类型。 |
payload |
object |
传递给 OnShow 的数据。 |
path |
string |
可选的资源路径。注册表中不存在时通过加载器加载,加载后自动注册到注册表。 |
返回值
| 类型 | 说明 |
|---|---|
IUIWindow |
窗口实例,失败返回 null。 |
GetPanel()¶
获取已注册的面板实例。键为面板实例的实际类型;精确未命中时静默返回 null, 仅当注册表存在派生实例(疑似以基类类型误查)时记录键语义警告。
返回值
| 类型 | 说明 |
|---|---|
T |
面板实例,未注册返回 null。 |
OpenWindow(object, string)¶
打开窗口(泛型)。不存在则实例化并驱动生命周期;已存在则置顶并重新 Show。
参数
| 名称 | 类型 | 说明 |
|---|---|---|
payload |
object |
传递给 OnShow 的数据。 |
path |
string |
可选的资源路径。注册表中不存在时通过加载器加载,加载后自动注册到注册表。 |
返回值
| 类型 | 说明 |
|---|---|
T |
窗口实例,失败返回 null。 |
ShowPanel(object, string)¶
打开面板(泛型)。已存在则置顶并重新 Show;不存在则实例化并驱动生命周期。
参数
| 名称 | 类型 | 说明 |
|---|---|---|
payload |
object |
传递给 OnShow 的数据。 |
path |
string |
可选的资源路径。注册表中不存在时通过加载器加载,加载后自动注册到注册表。 |
返回值
| 类型 | 说明 |
|---|---|
T |
面板实例,失败返回 null。 |
ShowPanel(TPayload, string)¶
打开面板(泛型 + 强类型 payload)。payload 以泛型参数传递,调用侧获得编译期类型约束; 面板内部仍经 Show(object) 接收后按需转换(运行时类型安全仍由面板内转换保证)。
参数
| 名称 | 类型 | 说明 |
|---|---|---|
payload |
TPayload |
传递给 OnShow 的强类型数据。 |
path |
string |
可选的资源路径。注册表中不存在时通过加载器加载,加载后自动注册到注册表。 |
返回值
| 类型 | 说明 |
|---|---|
TPanel |
面板实例,失败返回 null。 |
ContainPrefabAsset()¶
返回值
| 类型 | 说明 |
|---|---|
bool |
— |
ContainWindowPrefabAsset(Type)¶
窗口类型对应的预制体是否已注册(与面板共用同一份预制体注册表)。
参数
| 名称 | 类型 | 说明 |
|---|---|---|
windowType |
Type |
窗口类型。 |
返回值
| 类型 | 说明 |
|---|---|
bool |
— |
PrewarmPanel(Type, string)¶
预热面板。预实例化并隐藏面板,后续 ShowPanel(Type, object, string) 直接复用, 避免首次打开时的实例化卡顿。 面板以停用状态实例化,预热期不触发 Awake/OnEnable,待首次 Show 时再激活。
参数
| 名称 | 类型 | 说明 |
|---|---|---|
panelType |
Type |
面板类型。 |
path |
string |
可选的资源路径。注册表中不存在时通过加载器加载,加载后自动注册到注册表。 |
返回值
| 类型 | 说明 |
|---|---|
bool |
预热成功或面板已存在时返回 true。 |
PrewarmPanel(string)¶
预热面板(泛型)。预实例化并隐藏面板,后续 ShowPanel{T}(object, string) 直接复用, 避免首次打开时的实例化卡顿。
参数
| 名称 | 类型 | 说明 |
|---|---|---|
path |
string |
可选的资源路径。注册表中不存在时通过加载器加载,加载后自动注册到注册表。 |
返回值
| 类型 | 说明 |
|---|---|
bool |
预热成功或面板已存在时返回 true。 |
PrewarmWindow(Type, string)¶
预热窗口。预实例化并隐藏窗口,后续 OpenWindow(Type, object, string) 直接复用, 避免首次打开时的实例化卡顿。 窗口以停用状态实例化,预热期不触发 Awake/OnEnable,待首次打开时再激活(与面板同一契约)。
参数
| 名称 | 类型 | 说明 |
|---|---|---|
windowType |
Type |
窗口类型。 |
path |
string |
可选的资源路径。注册表中不存在时通过加载器加载,加载后自动注册到注册表。 |
返回值
| 类型 | 说明 |
|---|---|
bool |
预热成功或窗口已存在时返回 true。 |
CloseWindow(Type)¶
关闭窗口。按 DestroyOnHide 决定销毁或隐藏; 键语义与幂等约定与 HidePanel(Type) 一致。
参数
| 名称 | 类型 | 说明 |
|---|---|---|
windowType |
Type |
窗口类型。 |
CloseWindow()¶
关闭窗口(泛型)。按 DestroyOnHide 决定销毁或隐藏。
HidePanel(Type)¶
关闭面板。按 DestroyOnHide 决定销毁或隐藏。 注册表以面板实例的实际类型为键:以基类类型调用且注册表已存在派生实例时记录警告提示键语义; 无关联实例时按幂等语义静默返回。已停用(或未显示)的面板重复关闭同样为幂等操作。
参数
| 名称 | 类型 | 说明 |
|---|---|---|
panelType |
Type |
面板类型。 |
HidePanel()¶
关闭面板(泛型)。按 DestroyOnHide 决定销毁或隐藏。
PrewarmAll(Action)¶
预热所有已注册的面板,逐帧实例化以分摊性能开销。
参数
| 名称 | 类型 | 说明 |
|---|---|---|
onComplete |
Action |
全部预热完成后的回调(可为空)。 |
RegisterAssetLoader(IUIAssetLoader)¶
替换默认的面板资源加载器。
参数
| 名称 | 类型 | 说明 |
|---|---|---|
loader |
IUIAssetLoader |
自定义加载器。加载契约为同步语义(如同步缓存、Resources);Addressables 等异步管线需自行预加载后同步返回。为空时记录错误并保留现有加载器。 |
RegisterPanelPrefab(Type, GameObject)¶
注册面板类型对应的预制体。
参数
| 名称 | 类型 | 说明 |
|---|---|---|
panelType |
Type |
面板类型。 |
prefab |
GameObject |
面板预制体。 |
RegisterPanelPrefab(GameObject)¶
注册面板类型对应的预制体(泛型版本)。
参数
| 名称 | 类型 | 说明 |
|---|---|---|
prefab |
GameObject |
面板预制体。 |
RegisterWindowPrefab(Type, GameObject)¶
注册窗口类型对应的预制体(与面板共用同一份预制体注册表,类型系统天然分桶)。
参数
| 名称 | 类型 | 说明 |
|---|---|---|
windowType |
Type |
窗口类型。 |
prefab |
GameObject |
窗口预制体。 |
Get()¶
返回值
| 类型 | 说明 |
|---|---|
T |
— |
GetWindow()¶
静态快捷:获取已注册的窗口实例。
返回值
| 类型 | 说明 |
|---|---|
T |
窗口实例,未注册返回 null。 |
Open(object, string)¶
静态快捷:打开窗口。
参数
| 名称 | 类型 | 说明 |
|---|---|---|
payload |
object |
传递给 OnShow 的数据。 |
path |
string |
可选的资源路径。注册表中不存在时通过加载器加载,加载后自动注册到注册表。 |
返回值
| 类型 | 说明 |
|---|---|
T |
窗口实例,失败返回 null。 |
Show(object, string)¶
静态快捷:打开面板。
参数
| 名称 | 类型 | 说明 |
|---|---|---|
payload |
object |
传递给 OnShow 的数据。 |
path |
string |
资源路径,用于加载预制体。使用 UIAssetLoader 加载。 |
返回值
| 类型 | 说明 |
|---|---|
T |
面板实例。 |
Show(TPayload, string)¶
静态快捷:打开面板(强类型 payload 版本,同 ShowPanel{TPanel, TPayload}(TPayload, string))。
参数
| 名称 | 类型 | 说明 |
|---|---|---|
payload |
TPayload |
传递给 OnShow 的强类型数据。 |
path |
string |
资源路径,用于加载预制体。使用 UIAssetLoader 加载。 |
返回值
| 类型 | 说明 |
|---|---|
TPanel |
面板实例,失败返回 null。 |
ContainPrefab()¶
返回值
| 类型 | 说明 |
|---|---|
bool |
— |
ContainWindowPrefab()¶
静态快捷:窗口类型对应的预制体是否已注册。
返回值
| 类型 | 说明 |
|---|---|
bool |
— |
Prewarm(string)¶
静态快捷:预热面板。
参数
| 名称 | 类型 | 说明 |
|---|---|---|
path |
string |
可选的资源路径。注册表中不存在时通过加载器加载,加载后自动注册到注册表。 |
返回值
| 类型 | 说明 |
|---|---|
bool |
预热成功或面板已存在时返回 true。 |
PrewarmWindow(string)¶
静态快捷:预热窗口。
参数
| 名称 | 类型 | 说明 |
|---|---|---|
path |
string |
可选的资源路径。注册表中不存在时通过加载器加载,加载后自动注册到注册表。 |
返回值
| 类型 | 说明 |
|---|---|
bool |
预热成功或窗口已存在时返回 true。 |
Close()¶
静态快捷:关闭窗口。
Hide()¶
静态快捷:关闭面板。
RegisterPrefab(GameObject)¶
静态快捷:注册面板预制体。
参数
| 名称 | 类型 | 说明 |
|---|---|---|
prefab |
GameObject |
面板预制体。 |
RegisterPrefab(T)¶
静态快捷:注册面板预制体。
参数
| 名称 | 类型 | 说明 |
|---|---|---|
prefab |
T |
面板预制体。 |
RegisterWindowPrefab(GameObject)¶
静态快捷:注册窗口类型对应的预制体。
参数
| 名称 | 类型 | 说明 |
|---|---|---|
prefab |
GameObject |
窗口预制体。 |
Additional Notes¶
首个
## Additional Notes是增量生成文档标识符,请勿修改标题级别和内容!本文档由Script Doc Generator辅助生成。