跳转至

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()

public 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 的重载 == 而返回已销毁对象的相机。

public Camera UICamera { get; }

MaskMode

窗口蒙版调度模式。初值来自 UIModuleConfigSO(在 Project 窗口编辑配置资产即可调整, 不要求预放置本组件);运行时可切换,切换后立即重算全部窗口蒙版。

public UIMaskMode MaskMode { get; set; }

Instance

全局单例入口。 优先在已加载场景中查找预放置的实例;未找到时在 AesirModules(DDOL)下创建子物体。

public static UIModule Instance { get; }

方法

声明的方法

名称 描述
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) 静态快捷:打开窗口。
Open(string) 静态快捷:打开窗口(资源路径版本)。Open("UI/Xxx") 的字符串经本重载进入 path 形参——消除位置参数版中路径被 object payload 吞掉的陷阱(同 Show{T}(string))。
Show(object, string) 静态快捷:打开面板。
Show(string) 静态快捷:打开面板(资源路径版本)。Show("UI/Xxx") 的字符串经本重载进入 path 形参——消除位置参数版中路径被 object payload 吞掉、 随后报"未注册预制体且未提供 path"且不揭示真实原因的陷阱。
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 层级结构性损坏)时记录错误并中止本次显示,不保留半挂载实例。

public IUIPanel ShowPanel(Type panelType, object payload = null, string path = null)

参数

名称 类型 说明
panelType Type 面板类型。
payload object 传递给 OnShow 的数据。
path string 可选的资源路径。注册表中不存在时通过加载器加载,加载后自动注册到注册表。

返回值

类型 说明
IUIPanel 面板实例,失败返回 null。

GetWindow(Type)

获取已注册的窗口实例。键为窗口实例的实际类型;精确未命中时静默返回 null, 仅当注册表存在派生实例(疑似以基类类型误查)时记录键语义警告。

备注

纯查询不创建模块实例(理由同 Get{T})。

public IUIWindow GetWindow(Type windowType)

参数

名称 类型 说明
windowType Type 窗口类型。

返回值

类型 说明
IUIWindow 窗口实例,未注册返回 null。

OpenWindow(Type, object, string)

打开窗口。不存在(激活或停用)则实例化并驱动生命周期;已存在则置顶并重新 Show。 新窗口以停用状态实例化,按 挂载 UIRoot → 接线根 Canvas(相机/渲染模式/统一缩放配置/sortingOrder)→ 递归设 UI 层 → Initialize → Show 顺序驱动; Awake/OnEnable 推迟到 Show 内部激活时才触发(与面板同一契约)。

窗口注册表以实例的实际类型为键:以基类类型调用且注册表已存在派生实例时记录错误并返回 null; 根节点缺少 Canvas 组件(违反 Canvas 根约定)时记录错误并中止,不保留半挂载实例。

public IUIWindow OpenWindow(Type windowType, object payload = null, string path = null)

参数

名称 类型 说明
windowType Type 窗口类型。
payload object 传递给 OnShow 的数据。
path string 可选的资源路径。注册表中不存在时通过加载器加载,加载后自动注册到注册表。

返回值

类型 说明
IUIWindow 窗口实例,失败返回 null。

GetPanel()

获取已注册的面板实例。键为面板实例的实际类型;精确未命中时静默返回 null, 仅当注册表存在派生实例(疑似以基类类型误查)时记录键语义警告。

public T GetPanel<T>()

返回值

类型 说明
T 面板实例,未注册返回 null。

OpenWindow(object, string)

打开窗口(泛型)。不存在则实例化并驱动生命周期;已存在则置顶并重新 Show。

public T OpenWindow<T>(object payload = null, string path = null)

参数

名称 类型 说明
payload object 传递给 OnShow 的数据。
path string 可选的资源路径。注册表中不存在时通过加载器加载,加载后自动注册到注册表。

返回值

类型 说明
T 窗口实例,失败返回 null。

ShowPanel(object, string)

打开面板(泛型)。已存在则置顶并重新 Show;不存在则实例化并驱动生命周期。

public T ShowPanel<T>(object payload = null, string path = null)

参数

名称 类型 说明
payload object 传递给 OnShow 的数据。
path string 可选的资源路径。注册表中不存在时通过加载器加载,加载后自动注册到注册表。

返回值

类型 说明
T 面板实例,失败返回 null。

ShowPanel(TPayload, string)

打开面板(泛型 + 强类型 payload)。payload 以泛型参数传递,调用侧获得编译期类型约束; 面板内部仍经 Show(object) 接收后按需转换(运行时类型安全仍由面板内转换保证)。

public TPanel ShowPanel<TPanel, TPayload>(TPayload payload, string path = null)

参数

名称 类型 说明
payload TPayload 传递给 OnShow 的强类型数据。
path string 可选的资源路径。注册表中不存在时通过加载器加载,加载后自动注册到注册表。

返回值

类型 说明
TPanel 面板实例,失败返回 null。

ContainPrefabAsset()

public bool ContainPrefabAsset<T>()

返回值

类型 说明
bool —

ContainWindowPrefabAsset(Type)

窗口类型对应的预制体是否已注册(与面板共用同一份预制体注册表)。

public bool ContainWindowPrefabAsset(Type windowType)

参数

名称 类型 说明
windowType Type 窗口类型。

返回值

类型 说明
bool —

PrewarmPanel(Type, string)

预热面板。预实例化并隐藏面板,后续 ShowPanel(Type, object, string) 直接复用, 避免首次打开时的实例化卡顿。 面板以停用状态实例化,预热期不触发 Awake/OnEnable,待首次 Show 时再激活。

public bool PrewarmPanel(Type panelType, string path = null)

参数

名称 类型 说明
panelType Type 面板类型。
path string 可选的资源路径。注册表中不存在时通过加载器加载,加载后自动注册到注册表。

返回值

类型 说明
bool 预热成功或面板已存在时返回 true。

PrewarmPanel(string)

预热面板(泛型)。预实例化并隐藏面板,后续 ShowPanel{T}(object, string) 直接复用, 避免首次打开时的实例化卡顿。

public bool PrewarmPanel<T>(string path = null)

参数

名称 类型 说明
path string 可选的资源路径。注册表中不存在时通过加载器加载,加载后自动注册到注册表。

返回值

类型 说明
bool 预热成功或面板已存在时返回 true。

PrewarmWindow(Type, string)

预热窗口。预实例化并隐藏窗口,后续 OpenWindow(Type, object, string) 直接复用, 避免首次打开时的实例化卡顿。 窗口以停用状态实例化,预热期不触发 Awake/OnEnable,待首次打开时再激活(与面板同一契约)。

public bool PrewarmWindow(Type windowType, string path = null)

参数

名称 类型 说明
windowType Type 窗口类型。
path string 可选的资源路径。注册表中不存在时通过加载器加载,加载后自动注册到注册表。

返回值

类型 说明
bool 预热成功或窗口已存在时返回 true。

CloseWindow(Type)

关闭窗口。按 DestroyOnHide 决定销毁或隐藏; 键语义与幂等约定与 HidePanel(Type) 一致。

public void CloseWindow(Type windowType)

参数

名称 类型 说明
windowType Type 窗口类型。

CloseWindow()

关闭窗口(泛型)。按 DestroyOnHide 决定销毁或隐藏。

public void CloseWindow<T>()

HidePanel(Type)

关闭面板。按 DestroyOnHide 决定销毁或隐藏。 注册表以面板实例的实际类型为键:以基类类型调用且注册表已存在派生实例时记录警告提示键语义; 无关联实例时按幂等语义静默返回。已停用(或未显示)的面板重复关闭同样为幂等操作。

public void HidePanel(Type panelType)

参数

名称 类型 说明
panelType Type 面板类型。

HidePanel()

关闭面板(泛型)。按 DestroyOnHide 决定销毁或隐藏。

public void HidePanel<T>()

PrewarmAll(Action)

预热所有已注册的面板,逐帧实例化以分摊性能开销。

public void PrewarmAll(Action onComplete = null)

参数

名称 类型 说明
onComplete Action 全部预热完成后的回调(可为空)。

RegisterAssetLoader(IUIAssetLoader)

替换默认的面板资源加载器。

public void RegisterAssetLoader(IUIAssetLoader loader)

参数

名称 类型 说明
loader IUIAssetLoader 自定义加载器。加载契约为同步语义(如同步缓存、Resources);Addressables 等异步管线需自行预加载后同步返回。为空时记录错误并保留现有加载器。

RegisterPanelPrefab(Type, GameObject)

注册面板类型对应的预制体。

public void RegisterPanelPrefab(Type panelType, GameObject prefab)

参数

名称 类型 说明
panelType Type 面板类型。
prefab GameObject 面板预制体。

RegisterPanelPrefab(GameObject)

注册面板类型对应的预制体(泛型版本)。

public void RegisterPanelPrefab<T>(GameObject prefab)

参数

名称 类型 说明
prefab GameObject 面板预制体。

RegisterWindowPrefab(Type, GameObject)

注册窗口类型对应的预制体(与面板共用同一份预制体注册表,类型系统天然分桶)。

public void RegisterWindowPrefab(Type windowType, GameObject prefab)

参数

名称 类型 说明
windowType Type 窗口类型。
prefab GameObject 窗口预制体。

Get()

静态快捷:获取已注册的面板实例。

备注

纯查询不创建模块实例:无实例(如场景卸载、启动即查询、编辑器期探测)时返回 null, 不再凭空造出 [Aesir Modules] 宿主树。

public static T Get<T>()

返回值

类型 说明
T —

GetWindow()

静态快捷:获取已注册的窗口实例。

备注

纯查询不创建模块实例(理由同 Get{T})。

public static T GetWindow<T>()

返回值

类型 说明
T 窗口实例,未注册返回 null。

Open(object, string)

静态快捷:打开窗口。

public static T Open<T>(object payload = null, string path = null)

参数

名称 类型 说明
payload object 传递给 OnShow 的数据。
path string 可选的资源路径。注册表中不存在时通过加载器加载,加载后自动注册到注册表。

返回值

类型 说明
T 窗口实例,失败返回 null。

Open(string)

静态快捷:打开窗口(资源路径版本)。Open("UI/Xxx") 的字符串经本重载进入 path 形参——消除位置参数版中路径被 object payload 吞掉的陷阱(同 Show{T}(string))。

public static T Open<T>(string path)

参数

名称 类型 说明
path string 资源路径,用于加载预制体。使用 UIAssetLoader 加载。

返回值

类型 说明
T 窗口实例,失败返回 null。

Show(object, string)

静态快捷:打开面板。

public static T Show<T>(object payload = null, string path = null)

参数

名称 类型 说明
payload object 传递给 OnShow 的数据。
path string 资源路径,用于加载预制体。使用 UIAssetLoader 加载。

返回值

类型 说明
T 面板实例。

Show(string)

静态快捷:打开面板(资源路径版本)。Show("UI/Xxx") 的字符串经本重载进入 path 形参——消除位置参数版中路径被 object payload 吞掉、 随后报"未注册预制体且未提供 path"且不揭示真实原因的陷阱。

public static T Show<T>(string path)

参数

名称 类型 说明
path string 资源路径,用于加载预制体。使用 UIAssetLoader 加载。

返回值

类型 说明
T 面板实例。

Show(TPayload, string)

静态快捷:打开面板(强类型 payload 版本,同 ShowPanel{TPanel, TPayload}(TPayload, string))。

public static TPanel Show<TPanel, TPayload>(TPayload payload, string path = null)

参数

名称 类型 说明
payload TPayload 传递给 OnShow 的强类型数据。
path string 资源路径,用于加载预制体。使用 UIAssetLoader 加载。

返回值

类型 说明
TPanel 面板实例,失败返回 null。

ContainPrefab()

静态快捷:面板类型对应的预制体是否已注册。

备注

纯查询不创建模块实例(理由同 Get{T})。

public static bool ContainPrefab<T>()

返回值

类型 说明
bool —

ContainWindowPrefab()

静态快捷:窗口类型对应的预制体是否已注册。

备注

纯查询不创建模块实例(理由同 Get{T})。

public static bool ContainWindowPrefab<T>()

返回值

类型 说明
bool —

Prewarm(string)

静态快捷:预热面板。

public static bool Prewarm<T>(string path = null)

参数

名称 类型 说明
path string 可选的资源路径。注册表中不存在时通过加载器加载,加载后自动注册到注册表。

返回值

类型 说明
bool 预热成功或面板已存在时返回 true。

PrewarmWindow(string)

静态快捷:预热窗口。

public static bool PrewarmWindow<T>(string path = null)

参数

名称 类型 说明
path string 可选的资源路径。注册表中不存在时通过加载器加载,加载后自动注册到注册表。

返回值

类型 说明
bool 预热成功或窗口已存在时返回 true。

Close()

静态快捷:关闭窗口。

public static void Close<T>()

Hide()

静态快捷:关闭面板。

public static void Hide<T>()

RegisterPrefab(GameObject)

静态快捷:注册面板预制体。

public static void RegisterPrefab<T>(GameObject prefab)

参数

名称 类型 说明
prefab GameObject 面板预制体。

RegisterPrefab(T)

静态快捷:注册面板预制体。

public static void RegisterPrefab<T>(T prefab)

参数

名称 类型 说明
prefab T 面板预制体。

RegisterWindowPrefab(GameObject)

静态快捷:注册窗口类型对应的预制体。

public static void RegisterWindowPrefab<T>(GameObject prefab)

参数

名称 类型 说明
prefab GameObject 窗口预制体。

Additional Notes

首个 ## Additional Notes 是增量生成文档标识符,请勿修改标题级别和内容!本文档由 Script Doc Generator 辅助生成。