This commit is contained in:
MuHua-123
2025-01-13 16:19:03 +08:00
parent 8f387837db
commit 4f7a5d76ca
42 changed files with 328 additions and 83 deletions
@@ -6,10 +6,9 @@ using UnityEngine;
/// <summary>
/// 资源模块
/// </summary>
public class ModuleAssets<Data> {
public class ModuleAssets<Data> : Module<ModuleAssets<Data>> {
/// <summary> 数据列表 </summary>
protected List<Data> datas = new List<Data>();
/// <summary> 核心模块 </summary>
protected virtual ModuleCore ModuleCore => ModuleCore.I;
/// <summary> 更改事件 </summary>
public virtual event Action OnChange;
@@ -32,9 +31,6 @@ public class ModuleAssets<Data> {
/// <summary> 加载数据 </summary>
public virtual void Load() { throw new NotImplementedException(); }
/// <summary> 查询数据 </summary>
public virtual Data Find(int index) { throw new NotImplementedException(); }
public virtual Data Find(Guid guid) { throw new NotImplementedException(); }
/// <summary> 循环列表 </summary>
public virtual void ForEach(Action<Data> action) => Datas.ForEach(action);
}
@@ -10,8 +10,6 @@ public abstract class ModuleCamera : MonoBehaviour {
public static readonly LayerMask DefaultLayerMask = ~(1 << 0) | 1 << 0;
/// <summary> 必须要初始化 </summary>
protected abstract void Awake();
/// <summary> 核心模块 </summary>
protected virtual ModuleCore ModuleCore => ModuleCore.I;
/// <summary> 相机位置 </summary>
public abstract Vector3 Position { get; set; }
-17
View File
@@ -1,17 +0,0 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 核心模块,实现业务逻辑
/// </summary>
public class ModuleCore : Module<ModuleCore> {
#region
/// <summary> 不会被销毁的全局唯一页面模块 (UIDocument) </summary>
public ModuleUIPage GlobalPage;
/// <summary> 当前的主要页面模块 (UIDocument) </summary>
public ModuleUIPage CurrentPage;
#endregion
}
-11
View File
@@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: 831967c83916dda4a9cc48e672e4599c
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,11 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 执行模块
/// </summary>
public abstract class ModuleExecute<Data> {
/// <summary> 执行 </summary>
public abstract void Compute(Data data);
}
@@ -6,21 +6,19 @@ using UnityEngine;
/// <summary>
/// 数据处理器模块
/// </summary>
public class ModuleHandle<T> {
public class ModuleHandle<Data> : Module<ModuleHandle<Data>> {
/// <summary> 数据 </summary>
protected T value;
/// <summary> 核心模块 </summary>
protected virtual ModuleCore ModuleCore => ModuleCore.I;
protected Data value;
/// <summary> 当前数据 </summary>
public virtual T Current => value;
public virtual Data Current => value;
/// <summary> 当前数据是否有效 </summary>
public virtual bool IsValid => Current != null;
/// <summary> 改变当前数据 Event </summary>
public virtual event Action<T> OnChange;
public virtual event Action<Data> OnChange;
/// <summary> 改变当前数据 </summary>
public virtual void Change() => OnChange?.Invoke(value);
/// <summary> 改变当前数据 </summary>
public virtual void Change(T value) {this.value = value; OnChange?.Invoke(value); }
public virtual void Change(Data value) { this.value = value; OnChange?.Invoke(value); }
}
@@ -1,15 +0,0 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 输入模块
/// </summary>
public abstract class ModuleInput : MonoBehaviour {
/// <summary> 必须要初始化 </summary>
protected abstract void Awake();
/// <summary> 核心模块 </summary>
protected virtual ModuleCore ModuleCore => ModuleCore.I;
public abstract Vector2 MousePosition { get; }
}
+13 -7
View File
@@ -1,3 +1,4 @@
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
@@ -6,15 +7,20 @@ using UnityEngine;
/// 单个独立模块
/// </summary>
public abstract class ModuleSingle<Data> : MonoBehaviour {
/// <summary> 必须要初始化 </summary>
protected virtual void Awake() { }
/// <summary> 核心模块 </summary>
protected virtual ModuleCore ModuleCore => ModuleCore.I;
/// <summary> 模块单例 </summary>
public static ModuleSingle<Data> I => instance;
/// <summary> 模块单例 </summary>
protected static ModuleSingle<Data> instance;
/// <summary> 初始化 </summary>
protected virtual void Awake() {
if (instance != null) { Destroy(instance.gameObject); }
instance = this;
}
/// <summary> 打开 </summary>
public virtual void Open(Data data) { }
public virtual void Open(Data data) { throw new NotImplementedException(); }
/// <summary> 完成 </summary>
public virtual void Complete() { }
public virtual void Complete() { throw new NotImplementedException(); }
/// <summary> 关闭 </summary>
public virtual void Close() { }
public virtual void Close() { throw new NotImplementedException(); }
}
@@ -0,0 +1,15 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SingleTest : ModuleSingle<string> {
// Start is called before the first frame update
void Start() {
I.Open("ss");
}
// Update is called once per frame
void Update() {
}
}
@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 1fbdc8f1003e52b42b71c1679a3b8e3c
guid: 7cd3fb8ca73868a46bf1ff920e0cdc13
MonoImporter:
externalObjects: {}
serializedVersion: 2
-8
View File
@@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 1dd7861df30473e4380411dd72fc32c3
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -1,21 +0,0 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UIElements;
/// <summary>
/// UI页面
/// </summary>
public abstract class ModuleUIPage : MonoBehaviour {
public UIDocument document;
/// <summary> 根目录文档 </summary>
public VisualElement root => document.rootVisualElement;
/// <summary> 必须初始化 </summary>
protected abstract void Awake();
/// <summary> 核心模块 </summary>
protected virtual ModuleCore ModuleCore => ModuleCore.I;
/// <summary> 添加UI元素 </summary>
public void Add(VisualElement child) => root.Add(child);
/// <summary> 查询UI元素 </summary>
public T Q<T>(string name = null, string className = null) where T : VisualElement => root.Q<T>(name, className);
}
@@ -1,14 +0,0 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class UIGlobalPage : ModuleUIPage {
protected override void Awake() => ModuleCore.GlobalPage = this;
private void Start() {
string url = "https://neiyihuizhouilabtest.zgfzjy.cn/api/client/color/categroies";
DataRequestGet request = new DataRequestGet(url);
request.OnCallback = (obj) => { Debug.Log(obj); };
WebRequest.Send(request);
}
}
@@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: 6f0700aede140c44fb927acc112b9998
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
-8
View File
@@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 13ff0e5edf2a0e74098836968a2ea47e
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -1,53 +0,0 @@
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> {
/// <summary> 选择事件 </summary>
public static event Action<Data> OnSelect;
/// <summary> 触发事件 </summary>
public static void Select(Data data) => OnSelect?.Invoke(data);
/// <summary> 核心模块 </summary>
protected virtual ModuleCore ModuleCore => ModuleCore.I;
/// <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 += UIItem_OnSelect;
}
/// <summary> 触发选择事件 </summary>
public virtual void Select() => OnSelect?.Invoke(value);
/// <summary> 侦听选择事件 </summary>
public virtual void UIItem_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 -= UIItem_OnSelect;
}
@@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: ff06370808b1ecd46b161a402c6c171e
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 2c6f02c8edd5f1241b53b0c7e538e84a
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
-8
View File
@@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: da0641a5e1f51fd4f8eb2aeeb34d02fa
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -1,25 +0,0 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UIElements;
/// <summary>
/// UI窗口
/// </summary>
/// <typeparam name="Data">窗口需要的数据类型</typeparam>
public abstract class ModuleUIWindow<Data> : MonoBehaviour {
/// <summary> 绑定的页面 </summary>
public ModuleUIPage ModuleUIPage;
/// <summary> 必须初始化 </summary>
public abstract void Awake();
/// <summary> 核心模块 </summary>
protected virtual ModuleCore ModuleCore => ModuleCore.I;
/// <summary> 绑定的根元素 </summary>
public abstract VisualElement Element { get; }
/// <summary> 打开窗口,并且传进参数 </summary>
public abstract void Open(Data data);
/// <summary> 关闭窗口 </summary>
public abstract void Close();
}
@@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: 2f97b2c9b7073ea4b8e1409d50d9e4c0
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -8,8 +8,6 @@ using UnityEngine;
public abstract class ModuleVisual<Data> : MonoBehaviour {
/// <summary> 必须要初始化 </summary>
protected abstract void Awake();
/// <summary> 核心模块 </summary>
protected virtual ModuleCore ModuleCore => ModuleCore.I;
/// <summary> 更新可视化内容 </summary>
public abstract void UpdateVisual(Data data);
@@ -17,12 +15,13 @@ public abstract class ModuleVisual<Data> : MonoBehaviour {
public abstract void ReleaseVisual(Data data);
/// <summary> 创建可视化内容 </summary>
public void Create<T>(ref T value, Transform original, Transform parent) {
public static void Create<T>(ref T value, Transform original, Transform parent) {
if (value != null) { return; }
Transform temp = CreateTransform(original, parent);
value = temp.GetComponent<T>();
}
public Transform CreateTransform(Transform original, Transform parent) {
/// <summary> 创建Transform </summary>
public static Transform CreateTransform(Transform original, Transform parent) {
Transform temp = Instantiate(original, parent);
temp.gameObject.SetActive(true);
return temp;