框架更新

This commit is contained in:
MuHua-123
2024-12-06 12:12:59 +08:00
parent 0ff284b795
commit 4e498c5809
6 changed files with 81 additions and 4 deletions
@@ -1,5 +1,5 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: bd3360ba80b4e6f45b980c09ca91b77f guid: 13ff0e5edf2a0e74098836968a2ea47e
folderAsset: yes folderAsset: yes
DefaultImporter: DefaultImporter:
externalObjects: {} externalObjects: {}
@@ -0,0 +1,51 @@
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UIElements;
/// <summary>
/// UI面板
/// </summary>
public abstract class ModuleUIPanel : MonoBehaviour {
/// <summary> 绑定的页面 </summary>
public ModuleUIPage ModuleUIPage;
/// <summary> 可选初始化 </summary>
protected virtual void Awake() { }
/// <summary> 核心模块 </summary>
protected virtual ModuleCore ModuleCore => ModuleCore.I;
public abstract VisualElement Element { get; }
}
/// <summary>
/// UI项
/// </summary>
public abstract class UIItem<Data, T> where T : UIItem<Data, T> {
/// <summary> 选择事件 </summary>
public static event Action<Data> OnSelect;
/// <summary> 触发事件 </summary>
public static void Select(Data data) => OnSelect?.Invoke(data);
/// <summary> 绑定的数据 </summary>
public readonly Data value;
/// <summary> 绑定的元素 </summary>
public readonly VisualElement element;
/// <summary> 基础实例 </summary>
public UIItem(Data value, VisualElement element) {
this.value = value;
this.element = element;
OnSelect += UnitUIPanelItem_OnSelect;
}
/// <summary> 触发选择事件 </summary>
public virtual void Select() => OnSelect?.Invoke(value);
/// <summary> 侦听选择事件 </summary>
public virtual void UnitUIPanelItem_OnSelect(Data obj) {
if (value.Equals(obj)) { SelectState(); }
else { DefaultState(); }
}
/// <summary> 默认状态 </summary>
public virtual void DefaultState() { }
/// <summary> 选中状态 </summary>
public virtual void SelectState() { }
/// <summary> 释放 </summary>
public virtual void Release() => OnSelect -= UnitUIPanelItem_OnSelect;
}
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: da0641a5e1f51fd4f8eb2aeeb34d02fa
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -4,15 +4,22 @@ using UnityEngine;
using UnityEngine.UIElements; using UnityEngine.UIElements;
/// <summary> /// <summary>
/// UI面板单元 /// UI窗口
/// </summary> /// </summary>
public abstract class UnitUIPanel : MonoBehaviour { /// <typeparam name="Data">窗口需要的数据类型</typeparam>
public abstract class ModuleUIWindow<Data> : MonoBehaviour {
/// <summary> 绑定的页面 </summary> /// <summary> 绑定的页面 </summary>
public ModuleUIPage ModuleUIPage; public ModuleUIPage ModuleUIPage;
/// <summary> 必须初始化 </summary> /// <summary> 必须初始化 </summary>
protected abstract void Awake(); public abstract void Awake();
/// <summary> 核心模块 </summary> /// <summary> 核心模块 </summary>
protected virtual ModuleCore ModuleCore => ModuleCore.I; protected virtual ModuleCore ModuleCore => ModuleCore.I;
/// <summary> 绑定的根元素 </summary>
public abstract VisualElement Element { get; } public abstract VisualElement Element { get; }
/// <summary> 打开窗口,并且传进参数 </summary>
public abstract void Open(Data data);
/// <summary> 关闭窗口 </summary>
public abstract void Close();
} }
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 2f97b2c9b7073ea4b8e1409d50d9e4c0
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: