-
- using Godot;
-
- /// <summary>
- /// Ui节点代码接口
- /// </summary>
- /// <typeparam name="TNodeType">Godot中的节点类型</typeparam>
- /// <typeparam name="TCloneType">克隆该对象返回的类型</typeparam>
- public abstract class IUiNode<TNodeType, TCloneType> : IClone<TCloneType> where TNodeType : Node
- {
- /// <summary>
- /// Godot节点实例
- /// </summary>
- public TNodeType Instance { get; }
- /// <summary>
- /// 克隆当前对象, 并返回新的对象,
- /// 注意: 如果子节点改名或者移动层级, 那么有可能对导致属性中的子节点无法访问
- /// </summary>
- public abstract TCloneType Clone();
-
- public IUiNode(TNodeType node)
- {
- Instance = node;
- }
-
- /// <summary>
- /// 嵌套打开子ui
- /// </summary>
- public UiBase OpenNestedUi(string uiName)
- {
- var packedScene = ResourceManager.Load<PackedScene>("res://" + GameConfig.UiPrefabDir + uiName + ".tscn");
- var uiBase = packedScene.Instantiate<UiBase>();
- Instance.AddChild(uiBase);
-
- uiBase.OnCreateUi();
- uiBase.ShowUi();
- return uiBase;
- }
-
- /// <summary>
- /// 嵌套打开子ui
- /// </summary>
- public T OpenNestedUi<T>(string uiName) where T : UiBase
- {
- return (T)OpenNestedUi(uiName);
- }
- }