From 4f7a5d76ca199ddb13aa077a862280ba34013516 Mon Sep 17 00:00:00 2001 From: MuHua-123 <136542559+MuHua-123@users.noreply.github.com> Date: Mon, 13 Jan 2025 16:19:03 +0800 Subject: [PATCH] 1 --- .../ModuleCore/ModuleAssets/ModuleAssets.cs | 8 +- .../ModuleCore/ModuleCamera/ModuleCamera.cs | 2 - Assets/ModuleCore/ModuleCore.cs | 17 ---- .../{ModuleInput.meta => ModuleExecute.meta} | 0 .../ModuleCore/ModuleExecute/ModuleExecute.cs | 11 +++ .../ModuleExecute.cs.meta} | 0 .../ModuleCore/ModuleHandle/ModuleHandle.cs | 12 +-- Assets/ModuleCore/ModuleInput/ModuleInput.cs | 15 --- .../ModuleCore/ModuleSingle/ModuleSingle.cs | 20 ++-- Assets/ModuleCore/ModuleSingle/SingleTest.cs | 15 +++ .../SingleTest.cs.meta} | 2 +- .../ModuleCore/ModuleVisual/ModuleVisual.cs | 7 +- Assets/ModuleCoreUI.meta | 8 ++ Assets/ModuleCoreUI/ModuleUIControl.meta | 8 ++ .../ModuleUIControl/ModuleUIControl.cs | 14 +++ .../ModuleUIControl/ModuleUIControl.cs.meta | 11 +++ Assets/ModuleCoreUI/ModuleUIItem.meta | 8 ++ .../ModuleCoreUI/ModuleUIItem/ModuleUIItem.cs | 38 ++++++++ .../ModuleUIItem/ModuleUIItem.cs.meta | 11 +++ .../ModuleUIPage.meta | 0 .../ModuleUIPage/ModuleUIPage.cs | 2 - .../ModuleUIPage/ModuleUIPage.cs.meta | 0 .../ModuleUIPage/UIGlobalPage.cs | 2 +- .../ModuleUIPage/UIGlobalPage.cs.meta | 0 .../ModuleUIPanel.meta | 0 .../ModuleUIPanel/ModuleUIPanel.cs | 4 - .../ModuleUIPanel/ModuleUIPanel.cs.meta | 0 .../ModuleUIPanel/UIGlobalPage.meta | 0 .../ModuleUIWindow.meta | 0 .../ModuleUIWindow/ModuleUIWindow.cs | 2 - .../ModuleUIWindow/ModuleUIWindow.cs.meta | 0 Assets/ModuleFixed/ModuleFixed.cs | 3 +- Assets/ModulePrefab/ModulePrefab.cs | 2 - Assets/ModuleTools/LayerMaskTool.cs | 17 ++++ Assets/ModuleTools/LayerMaskTool.cs.meta | 11 +++ Assets/ModuleTools/LoopIndexTool.cs | 21 ++++ Assets/ModuleTools/LoopIndexTool.cs.meta | 11 +++ Assets/RenderingPipeline/Feature.meta | 8 ++ .../Feature/OutlineRendererFeature.cs | 96 +++++++++++++++++++ .../Feature/OutlineRendererFeature.cs.meta | 11 +++ .../UIControl/Runtime/MUSliderHorizontal.cs | 12 +-- ProjectSettings/ProjectSettings.asset | 2 +- 42 files changed, 328 insertions(+), 83 deletions(-) delete mode 100644 Assets/ModuleCore/ModuleCore.cs rename Assets/ModuleCore/{ModuleInput.meta => ModuleExecute.meta} (100%) create mode 100644 Assets/ModuleCore/ModuleExecute/ModuleExecute.cs rename Assets/ModuleCore/{ModuleInput/ModuleInput.cs.meta => ModuleExecute/ModuleExecute.cs.meta} (100%) delete mode 100644 Assets/ModuleCore/ModuleInput/ModuleInput.cs create mode 100644 Assets/ModuleCore/ModuleSingle/SingleTest.cs rename Assets/ModuleCore/{ModuleCore.cs.meta => ModuleSingle/SingleTest.cs.meta} (83%) create mode 100644 Assets/ModuleCoreUI.meta create mode 100644 Assets/ModuleCoreUI/ModuleUIControl.meta create mode 100644 Assets/ModuleCoreUI/ModuleUIControl/ModuleUIControl.cs create mode 100644 Assets/ModuleCoreUI/ModuleUIControl/ModuleUIControl.cs.meta create mode 100644 Assets/ModuleCoreUI/ModuleUIItem.meta create mode 100644 Assets/ModuleCoreUI/ModuleUIItem/ModuleUIItem.cs create mode 100644 Assets/ModuleCoreUI/ModuleUIItem/ModuleUIItem.cs.meta rename Assets/{ModuleCore => ModuleCoreUI}/ModuleUIPage.meta (100%) rename Assets/{ModuleCore => ModuleCoreUI}/ModuleUIPage/ModuleUIPage.cs (87%) rename Assets/{ModuleCore => ModuleCoreUI}/ModuleUIPage/ModuleUIPage.cs.meta (100%) rename Assets/{ModuleCore => ModuleCoreUI}/ModuleUIPage/UIGlobalPage.cs (85%) rename Assets/{ModuleCore => ModuleCoreUI}/ModuleUIPage/UIGlobalPage.cs.meta (100%) rename Assets/{ModuleCore => ModuleCoreUI}/ModuleUIPanel.meta (100%) rename Assets/{ModuleCore => ModuleCoreUI}/ModuleUIPanel/ModuleUIPanel.cs (88%) rename Assets/{ModuleCore => ModuleCoreUI}/ModuleUIPanel/ModuleUIPanel.cs.meta (100%) rename Assets/{ModuleCore => ModuleCoreUI}/ModuleUIPanel/UIGlobalPage.meta (100%) rename Assets/{ModuleCore => ModuleCoreUI}/ModuleUIWindow.meta (100%) rename Assets/{ModuleCore => ModuleCoreUI}/ModuleUIWindow/ModuleUIWindow.cs (87%) rename Assets/{ModuleCore => ModuleCoreUI}/ModuleUIWindow/ModuleUIWindow.cs.meta (100%) create mode 100644 Assets/ModuleTools/LayerMaskTool.cs create mode 100644 Assets/ModuleTools/LayerMaskTool.cs.meta create mode 100644 Assets/ModuleTools/LoopIndexTool.cs create mode 100644 Assets/ModuleTools/LoopIndexTool.cs.meta create mode 100644 Assets/RenderingPipeline/Feature.meta create mode 100644 Assets/RenderingPipeline/Feature/OutlineRendererFeature.cs create mode 100644 Assets/RenderingPipeline/Feature/OutlineRendererFeature.cs.meta diff --git a/Assets/ModuleCore/ModuleAssets/ModuleAssets.cs b/Assets/ModuleCore/ModuleAssets/ModuleAssets.cs index c5c23e9..dadf57c 100644 --- a/Assets/ModuleCore/ModuleAssets/ModuleAssets.cs +++ b/Assets/ModuleCore/ModuleAssets/ModuleAssets.cs @@ -6,10 +6,9 @@ using UnityEngine; /// /// 资源模块 /// -public class ModuleAssets { +public class ModuleAssets : Module> { + /// 数据列表 protected List datas = new List(); - /// 核心模块 - protected virtual ModuleCore ModuleCore => ModuleCore.I; /// 更改事件 public virtual event Action OnChange; @@ -32,9 +31,6 @@ public class ModuleAssets { /// 加载数据 public virtual void Load() { throw new NotImplementedException(); } - /// 查询数据 - public virtual Data Find(int index) { throw new NotImplementedException(); } - public virtual Data Find(Guid guid) { throw new NotImplementedException(); } /// 循环列表 public virtual void ForEach(Action action) => Datas.ForEach(action); } diff --git a/Assets/ModuleCore/ModuleCamera/ModuleCamera.cs b/Assets/ModuleCore/ModuleCamera/ModuleCamera.cs index 503b47f..11da97f 100644 --- a/Assets/ModuleCore/ModuleCamera/ModuleCamera.cs +++ b/Assets/ModuleCore/ModuleCamera/ModuleCamera.cs @@ -10,8 +10,6 @@ public abstract class ModuleCamera : MonoBehaviour { public static readonly LayerMask DefaultLayerMask = ~(1 << 0) | 1 << 0; /// 必须要初始化 protected abstract void Awake(); - /// 核心模块 - protected virtual ModuleCore ModuleCore => ModuleCore.I; /// 相机位置 public abstract Vector3 Position { get; set; } diff --git a/Assets/ModuleCore/ModuleCore.cs b/Assets/ModuleCore/ModuleCore.cs deleted file mode 100644 index b896425..0000000 --- a/Assets/ModuleCore/ModuleCore.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -/// -/// 核心模块,实现业务逻辑 -/// -public class ModuleCore : Module { - - #region 页面模块 - /// 不会被销毁的全局唯一页面模块 (UIDocument) - public ModuleUIPage GlobalPage; - /// 当前的主要页面模块 (UIDocument) - public ModuleUIPage CurrentPage; - #endregion - -} diff --git a/Assets/ModuleCore/ModuleInput.meta b/Assets/ModuleCore/ModuleExecute.meta similarity index 100% rename from Assets/ModuleCore/ModuleInput.meta rename to Assets/ModuleCore/ModuleExecute.meta diff --git a/Assets/ModuleCore/ModuleExecute/ModuleExecute.cs b/Assets/ModuleCore/ModuleExecute/ModuleExecute.cs new file mode 100644 index 0000000..a3466b8 --- /dev/null +++ b/Assets/ModuleCore/ModuleExecute/ModuleExecute.cs @@ -0,0 +1,11 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +/// +/// 执行模块 +/// +public abstract class ModuleExecute { + /// 执行 + public abstract void Compute(Data data); +} diff --git a/Assets/ModuleCore/ModuleInput/ModuleInput.cs.meta b/Assets/ModuleCore/ModuleExecute/ModuleExecute.cs.meta similarity index 100% rename from Assets/ModuleCore/ModuleInput/ModuleInput.cs.meta rename to Assets/ModuleCore/ModuleExecute/ModuleExecute.cs.meta diff --git a/Assets/ModuleCore/ModuleHandle/ModuleHandle.cs b/Assets/ModuleCore/ModuleHandle/ModuleHandle.cs index 4d49add..39aa9c6 100644 --- a/Assets/ModuleCore/ModuleHandle/ModuleHandle.cs +++ b/Assets/ModuleCore/ModuleHandle/ModuleHandle.cs @@ -6,21 +6,19 @@ using UnityEngine; /// /// 数据处理器模块 /// -public class ModuleHandle { +public class ModuleHandle : Module> { /// 数据 - protected T value; - /// 核心模块 - protected virtual ModuleCore ModuleCore => ModuleCore.I; + protected Data value; /// 当前数据 - public virtual T Current => value; + public virtual Data Current => value; /// 当前数据是否有效 public virtual bool IsValid => Current != null; /// 改变当前数据 Event - public virtual event Action OnChange; + public virtual event Action OnChange; /// 改变当前数据 public virtual void Change() => OnChange?.Invoke(value); /// 改变当前数据 - public virtual void Change(T value) {this.value = value; OnChange?.Invoke(value); } + public virtual void Change(Data value) { this.value = value; OnChange?.Invoke(value); } } diff --git a/Assets/ModuleCore/ModuleInput/ModuleInput.cs b/Assets/ModuleCore/ModuleInput/ModuleInput.cs deleted file mode 100644 index cecc06c..0000000 --- a/Assets/ModuleCore/ModuleInput/ModuleInput.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -/// -/// 输入模块 -/// -public abstract class ModuleInput : MonoBehaviour { - /// 必须要初始化 - protected abstract void Awake(); - /// 核心模块 - protected virtual ModuleCore ModuleCore => ModuleCore.I; - - public abstract Vector2 MousePosition { get; } -} diff --git a/Assets/ModuleCore/ModuleSingle/ModuleSingle.cs b/Assets/ModuleCore/ModuleSingle/ModuleSingle.cs index a2f2a42..273ed3a 100644 --- a/Assets/ModuleCore/ModuleSingle/ModuleSingle.cs +++ b/Assets/ModuleCore/ModuleSingle/ModuleSingle.cs @@ -1,3 +1,4 @@ +using System; using System.Collections; using System.Collections.Generic; using UnityEngine; @@ -6,15 +7,20 @@ using UnityEngine; /// 单个独立模块 /// public abstract class ModuleSingle : MonoBehaviour { - /// 必须要初始化 - protected virtual void Awake() { } - /// 核心模块 - protected virtual ModuleCore ModuleCore => ModuleCore.I; + /// 模块单例 + public static ModuleSingle I => instance; + /// 模块单例 + protected static ModuleSingle instance; + /// 初始化 + protected virtual void Awake() { + if (instance != null) { Destroy(instance.gameObject); } + instance = this; + } /// 打开 - public virtual void Open(Data data) { } + public virtual void Open(Data data) { throw new NotImplementedException(); } /// 完成 - public virtual void Complete() { } + public virtual void Complete() { throw new NotImplementedException(); } /// 关闭 - public virtual void Close() { } + public virtual void Close() { throw new NotImplementedException(); } } diff --git a/Assets/ModuleCore/ModuleSingle/SingleTest.cs b/Assets/ModuleCore/ModuleSingle/SingleTest.cs new file mode 100644 index 0000000..7d19cf2 --- /dev/null +++ b/Assets/ModuleCore/ModuleSingle/SingleTest.cs @@ -0,0 +1,15 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class SingleTest : ModuleSingle { + // Start is called before the first frame update + void Start() { + I.Open("ss"); + } + + // Update is called once per frame + void Update() { + + } +} diff --git a/Assets/ModuleCore/ModuleCore.cs.meta b/Assets/ModuleCore/ModuleSingle/SingleTest.cs.meta similarity index 83% rename from Assets/ModuleCore/ModuleCore.cs.meta rename to Assets/ModuleCore/ModuleSingle/SingleTest.cs.meta index 393d01d..22ed2ff 100644 --- a/Assets/ModuleCore/ModuleCore.cs.meta +++ b/Assets/ModuleCore/ModuleSingle/SingleTest.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 831967c83916dda4a9cc48e672e4599c +guid: 7cd3fb8ca73868a46bf1ff920e0cdc13 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/ModuleCore/ModuleVisual/ModuleVisual.cs b/Assets/ModuleCore/ModuleVisual/ModuleVisual.cs index 22f336c..99a9373 100644 --- a/Assets/ModuleCore/ModuleVisual/ModuleVisual.cs +++ b/Assets/ModuleCore/ModuleVisual/ModuleVisual.cs @@ -8,8 +8,6 @@ using UnityEngine; public abstract class ModuleVisual : MonoBehaviour { /// 必须要初始化 protected abstract void Awake(); - /// 核心模块 - protected virtual ModuleCore ModuleCore => ModuleCore.I; /// 更新可视化内容 public abstract void UpdateVisual(Data data); @@ -17,12 +15,13 @@ public abstract class ModuleVisual : MonoBehaviour { public abstract void ReleaseVisual(Data data); /// 创建可视化内容 - public void Create(ref T value, Transform original, Transform parent) { + public static void Create(ref T value, Transform original, Transform parent) { if (value != null) { return; } Transform temp = CreateTransform(original, parent); value = temp.GetComponent(); } - public Transform CreateTransform(Transform original, Transform parent) { + /// 创建Transform + public static Transform CreateTransform(Transform original, Transform parent) { Transform temp = Instantiate(original, parent); temp.gameObject.SetActive(true); return temp; diff --git a/Assets/ModuleCoreUI.meta b/Assets/ModuleCoreUI.meta new file mode 100644 index 0000000..83195cf --- /dev/null +++ b/Assets/ModuleCoreUI.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ffdce56728c4f0943b14d5dd2f1a4434 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleCoreUI/ModuleUIControl.meta b/Assets/ModuleCoreUI/ModuleUIControl.meta new file mode 100644 index 0000000..3c368c6 --- /dev/null +++ b/Assets/ModuleCoreUI/ModuleUIControl.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3e5a783a4eff92d4da56483985f0a2a1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleCoreUI/ModuleUIControl/ModuleUIControl.cs b/Assets/ModuleCoreUI/ModuleUIControl/ModuleUIControl.cs new file mode 100644 index 0000000..02b41cc --- /dev/null +++ b/Assets/ModuleCoreUI/ModuleUIControl/ModuleUIControl.cs @@ -0,0 +1,14 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UIElements; + +/// +/// UI控件 +/// +public abstract class ModuleUIControl { + /// 绑定的元素 + public readonly VisualElement element; + /// 基础实例 + public ModuleUIControl(VisualElement element) => this.element = element; +} diff --git a/Assets/ModuleCoreUI/ModuleUIControl/ModuleUIControl.cs.meta b/Assets/ModuleCoreUI/ModuleUIControl/ModuleUIControl.cs.meta new file mode 100644 index 0000000..f5ea9b1 --- /dev/null +++ b/Assets/ModuleCoreUI/ModuleUIControl/ModuleUIControl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 634630f2be3c7074db93baa4289bf093 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleCoreUI/ModuleUIItem.meta b/Assets/ModuleCoreUI/ModuleUIItem.meta new file mode 100644 index 0000000..f0af745 --- /dev/null +++ b/Assets/ModuleCoreUI/ModuleUIItem.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5213b7240a67ca7489050d7d0bc8a935 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleCoreUI/ModuleUIItem/ModuleUIItem.cs b/Assets/ModuleCoreUI/ModuleUIItem/ModuleUIItem.cs new file mode 100644 index 0000000..bf468d1 --- /dev/null +++ b/Assets/ModuleCoreUI/ModuleUIItem/ModuleUIItem.cs @@ -0,0 +1,38 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UIElements; + +/// +/// UI项 +/// +public abstract class ModuleUIItem { + /// 选择事件 + public static event Action OnSelect; + /// 触发事件 + public static void Select(Data data) => OnSelect?.Invoke(data); + /// 绑定的数据 + public readonly Data value; + /// 绑定的元素 + public readonly VisualElement element; + /// 基础实例 + public ModuleUIItem(Data value, VisualElement element) { + this.value = value; + this.element = element; + OnSelect += UIItem_OnSelect; + } + /// 触发选择事件 + public virtual void Select() => OnSelect?.Invoke(value); + /// 侦听选择事件 + public virtual void UIItem_OnSelect(Data obj) { + if (value.Equals(obj)) { SelectState(); } + else { DefaultState(); } + } + /// 默认状态 + public virtual void DefaultState() { } + /// 选中状态 + public virtual void SelectState() { } + /// 释放 + public virtual void Release() => OnSelect -= UIItem_OnSelect; +} diff --git a/Assets/ModuleCoreUI/ModuleUIItem/ModuleUIItem.cs.meta b/Assets/ModuleCoreUI/ModuleUIItem/ModuleUIItem.cs.meta new file mode 100644 index 0000000..61c2fe4 --- /dev/null +++ b/Assets/ModuleCoreUI/ModuleUIItem/ModuleUIItem.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6b31786a09cb95646a3068a93ad21834 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleCore/ModuleUIPage.meta b/Assets/ModuleCoreUI/ModuleUIPage.meta similarity index 100% rename from Assets/ModuleCore/ModuleUIPage.meta rename to Assets/ModuleCoreUI/ModuleUIPage.meta diff --git a/Assets/ModuleCore/ModuleUIPage/ModuleUIPage.cs b/Assets/ModuleCoreUI/ModuleUIPage/ModuleUIPage.cs similarity index 87% rename from Assets/ModuleCore/ModuleUIPage/ModuleUIPage.cs rename to Assets/ModuleCoreUI/ModuleUIPage/ModuleUIPage.cs index d62a652..33e0333 100644 --- a/Assets/ModuleCore/ModuleUIPage/ModuleUIPage.cs +++ b/Assets/ModuleCoreUI/ModuleUIPage/ModuleUIPage.cs @@ -12,8 +12,6 @@ public abstract class ModuleUIPage : MonoBehaviour { public VisualElement root => document.rootVisualElement; /// 必须初始化 protected abstract void Awake(); - /// 核心模块 - protected virtual ModuleCore ModuleCore => ModuleCore.I; /// 添加UI元素 public void Add(VisualElement child) => root.Add(child); /// 查询UI元素 diff --git a/Assets/ModuleCore/ModuleUIPage/ModuleUIPage.cs.meta b/Assets/ModuleCoreUI/ModuleUIPage/ModuleUIPage.cs.meta similarity index 100% rename from Assets/ModuleCore/ModuleUIPage/ModuleUIPage.cs.meta rename to Assets/ModuleCoreUI/ModuleUIPage/ModuleUIPage.cs.meta diff --git a/Assets/ModuleCore/ModuleUIPage/UIGlobalPage.cs b/Assets/ModuleCoreUI/ModuleUIPage/UIGlobalPage.cs similarity index 85% rename from Assets/ModuleCore/ModuleUIPage/UIGlobalPage.cs rename to Assets/ModuleCoreUI/ModuleUIPage/UIGlobalPage.cs index bd40c07..4e61f46 100644 --- a/Assets/ModuleCore/ModuleUIPage/UIGlobalPage.cs +++ b/Assets/ModuleCoreUI/ModuleUIPage/UIGlobalPage.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using UnityEngine; public class UIGlobalPage : ModuleUIPage { - protected override void Awake() => ModuleCore.GlobalPage = this; + protected override void Awake() { } private void Start() { string url = "https://neiyihuizhouilabtest.zgfzjy.cn/api/client/color/categroies"; diff --git a/Assets/ModuleCore/ModuleUIPage/UIGlobalPage.cs.meta b/Assets/ModuleCoreUI/ModuleUIPage/UIGlobalPage.cs.meta similarity index 100% rename from Assets/ModuleCore/ModuleUIPage/UIGlobalPage.cs.meta rename to Assets/ModuleCoreUI/ModuleUIPage/UIGlobalPage.cs.meta diff --git a/Assets/ModuleCore/ModuleUIPanel.meta b/Assets/ModuleCoreUI/ModuleUIPanel.meta similarity index 100% rename from Assets/ModuleCore/ModuleUIPanel.meta rename to Assets/ModuleCoreUI/ModuleUIPanel.meta diff --git a/Assets/ModuleCore/ModuleUIPanel/ModuleUIPanel.cs b/Assets/ModuleCoreUI/ModuleUIPanel/ModuleUIPanel.cs similarity index 88% rename from Assets/ModuleCore/ModuleUIPanel/ModuleUIPanel.cs rename to Assets/ModuleCoreUI/ModuleUIPanel/ModuleUIPanel.cs index d89d701..2b4e39f 100644 --- a/Assets/ModuleCore/ModuleUIPanel/ModuleUIPanel.cs +++ b/Assets/ModuleCoreUI/ModuleUIPanel/ModuleUIPanel.cs @@ -12,8 +12,6 @@ public abstract class ModuleUIPanel : MonoBehaviour { public ModuleUIPage ModuleUIPage; /// 可选初始化 protected virtual void Awake() { } - /// 核心模块 - protected virtual ModuleCore ModuleCore => ModuleCore.I; public abstract VisualElement Element { get; } } @@ -25,8 +23,6 @@ public abstract class UIItem { public static event Action OnSelect; /// 触发事件 public static void Select(Data data) => OnSelect?.Invoke(data); - /// 核心模块 - protected virtual ModuleCore ModuleCore => ModuleCore.I; /// 绑定的数据 public readonly Data value; /// 绑定的元素 diff --git a/Assets/ModuleCore/ModuleUIPanel/ModuleUIPanel.cs.meta b/Assets/ModuleCoreUI/ModuleUIPanel/ModuleUIPanel.cs.meta similarity index 100% rename from Assets/ModuleCore/ModuleUIPanel/ModuleUIPanel.cs.meta rename to Assets/ModuleCoreUI/ModuleUIPanel/ModuleUIPanel.cs.meta diff --git a/Assets/ModuleCore/ModuleUIPanel/UIGlobalPage.meta b/Assets/ModuleCoreUI/ModuleUIPanel/UIGlobalPage.meta similarity index 100% rename from Assets/ModuleCore/ModuleUIPanel/UIGlobalPage.meta rename to Assets/ModuleCoreUI/ModuleUIPanel/UIGlobalPage.meta diff --git a/Assets/ModuleCore/ModuleUIWindow.meta b/Assets/ModuleCoreUI/ModuleUIWindow.meta similarity index 100% rename from Assets/ModuleCore/ModuleUIWindow.meta rename to Assets/ModuleCoreUI/ModuleUIWindow.meta diff --git a/Assets/ModuleCore/ModuleUIWindow/ModuleUIWindow.cs b/Assets/ModuleCoreUI/ModuleUIWindow/ModuleUIWindow.cs similarity index 87% rename from Assets/ModuleCore/ModuleUIWindow/ModuleUIWindow.cs rename to Assets/ModuleCoreUI/ModuleUIWindow/ModuleUIWindow.cs index 4026132..bd6b6fa 100644 --- a/Assets/ModuleCore/ModuleUIWindow/ModuleUIWindow.cs +++ b/Assets/ModuleCoreUI/ModuleUIWindow/ModuleUIWindow.cs @@ -12,8 +12,6 @@ public abstract class ModuleUIWindow : MonoBehaviour { public ModuleUIPage ModuleUIPage; /// 必须初始化 public abstract void Awake(); - /// 核心模块 - protected virtual ModuleCore ModuleCore => ModuleCore.I; /// 绑定的根元素 public abstract VisualElement Element { get; } diff --git a/Assets/ModuleCore/ModuleUIWindow/ModuleUIWindow.cs.meta b/Assets/ModuleCoreUI/ModuleUIWindow/ModuleUIWindow.cs.meta similarity index 100% rename from Assets/ModuleCore/ModuleUIWindow/ModuleUIWindow.cs.meta rename to Assets/ModuleCoreUI/ModuleUIWindow/ModuleUIWindow.cs.meta diff --git a/Assets/ModuleFixed/ModuleFixed.cs b/Assets/ModuleFixed/ModuleFixed.cs index 9eec4eb..0e11a22 100644 --- a/Assets/ModuleFixed/ModuleFixed.cs +++ b/Assets/ModuleFixed/ModuleFixed.cs @@ -6,6 +6,5 @@ using UnityEngine; /// 固定数据物体模块 /// public abstract class ModuleFixed : MonoBehaviour { - /// 核心模块 - protected virtual ModuleCore ModuleCore => ModuleCore.I; + } diff --git a/Assets/ModulePrefab/ModulePrefab.cs b/Assets/ModulePrefab/ModulePrefab.cs index ecf68d9..a1f1843 100644 --- a/Assets/ModulePrefab/ModulePrefab.cs +++ b/Assets/ModulePrefab/ModulePrefab.cs @@ -8,8 +8,6 @@ using UnityEngine; public abstract class ModulePrefab : MonoBehaviour { /// 关联的数据 protected Data value; - /// 核心模块 - protected virtual ModuleCore ModuleCore => ModuleCore.I; /// 关联的数据 public virtual Data Value => value; diff --git a/Assets/ModuleTools/LayerMaskTool.cs b/Assets/ModuleTools/LayerMaskTool.cs new file mode 100644 index 0000000..764124f --- /dev/null +++ b/Assets/ModuleTools/LayerMaskTool.cs @@ -0,0 +1,17 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +/// +/// 图层遮罩工具 +/// +public static class LayerMaskTool { + ///// 板片 + //public static readonly LayerMask Plate = 1 << LayerMask.NameToLayer("Plate"); + ///// 形状 + //public static readonly LayerMask Shape = 1 << LayerMask.NameToLayer("Shape"); + ///// 安排点 + //public static readonly LayerMask Arrange = 1 << LayerMask.NameToLayer("Arrange"); + ///// 模特 + //public static readonly LayerMask Model = 1 << LayerMask.NameToLayer("Model"); +} diff --git a/Assets/ModuleTools/LayerMaskTool.cs.meta b/Assets/ModuleTools/LayerMaskTool.cs.meta new file mode 100644 index 0000000..becfc83 --- /dev/null +++ b/Assets/ModuleTools/LayerMaskTool.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d32659481db1a124c9b564f885ee75a8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleTools/LoopIndexTool.cs b/Assets/ModuleTools/LoopIndexTool.cs new file mode 100644 index 0000000..e3e14f3 --- /dev/null +++ b/Assets/ModuleTools/LoopIndexTool.cs @@ -0,0 +1,21 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public static class LoopIndexTool { + /// 头尾循环标准化索引 + public static Data LoopIndex(this List list, int index) { + return list[LoopIndex(index, list.Count)]; + } + /// 头尾循环标准化索引 + public static Data LoopIndex(this Data[] array, int index) { + return array[LoopIndex(index, array.Length)]; + } + /// 头尾循环标准化索引 + public static int LoopIndex(int index, int maxIndex) { + if (maxIndex == 0) { Debug.LogError("错误索引:maxIndex = 0"); return 0; } + if (index < 0) { return LoopIndex(index + maxIndex, maxIndex); } + if (index >= maxIndex) { return LoopIndex(index - maxIndex, maxIndex); } + return index; + } +} diff --git a/Assets/ModuleTools/LoopIndexTool.cs.meta b/Assets/ModuleTools/LoopIndexTool.cs.meta new file mode 100644 index 0000000..107f610 --- /dev/null +++ b/Assets/ModuleTools/LoopIndexTool.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f410a5e521f087048804a823d1c02e6c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RenderingPipeline/Feature.meta b/Assets/RenderingPipeline/Feature.meta new file mode 100644 index 0000000..8efc3d7 --- /dev/null +++ b/Assets/RenderingPipeline/Feature.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 821f2aa73c2761649a4466ee441ad752 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/RenderingPipeline/Feature/OutlineRendererFeature.cs b/Assets/RenderingPipeline/Feature/OutlineRendererFeature.cs new file mode 100644 index 0000000..3d8cd39 --- /dev/null +++ b/Assets/RenderingPipeline/Feature/OutlineRendererFeature.cs @@ -0,0 +1,96 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine.Rendering.Universal; + +public class OutlineRendererFeature : ScriptableRendererFeature { + /// 渲染设置 + public OutlineSettings settings; + /// 渲染Event + public RenderPassEvent renderPassEvent = RenderPassEvent.AfterRenderingPostProcessing; + /// 渲染通道 + private OutlineRendererPass OutlineBlendRenderPass; + public override void Create() { + OutlineBlendRenderPass = new OutlineRendererPass(settings); + OutlineBlendRenderPass.renderPassEvent = renderPassEvent; + } + public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData) { + OutlineBlendRenderPass.Setup(renderingData); + renderer.EnqueuePass(OutlineBlendRenderPass); + Dispose(); + } + + #region 渲染设置 + [Serializable] + public class OutlineSettings { + [Tooltip("渲染对象")] public float size = 5; + [Tooltip("渲染对象")] public Material unlit; + [Tooltip("轮廓材质")] public Material outline; + [Tooltip("混合颜色")] public Material color; + [Tooltip("渲染对象")] public List RenderObjs = new List(); + /// 是否有效设置 + public bool isValid => unlit != null && outline != null && color != null; + } + #endregion + + #region 渲染通道 + public class OutlineRendererPass : ScriptableRenderPass { + public const string ProfilerTag = "OutlineBlend"; + /// 临时纹理 + public RTHandle TempRTHandel; + /// 轮廓纹理 + public RTHandle OutlineRTHandel; + /// 渲染设置 + public OutlineSettings settings; + /// 渲染通道 + public OutlineRendererPass(OutlineSettings settings) { + this.settings = settings; + } + /// 渲染前设置 + public void Setup(in RenderingData renderingData) { + if (!settings.isValid) { return; } + settings.outline.SetFloat("_Size", settings.size); + RenderTextureDescriptor descriptor = renderingData.cameraData.cameraTargetDescriptor; + descriptor.depthBufferBits = (int)DepthBits.None; + RenderingUtils.ReAllocateIfNeeded(ref OutlineRTHandel, descriptor, name: "OutlineRT"); + RenderingUtils.ReAllocateIfNeeded(ref TempRTHandel, descriptor, name: "TempRT"); + } + public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData) { + if (!settings.isValid) { return; } + CommandBuffer command = CommandBufferPool.Get(ProfilerTag); + //在临时纹理上渲染物体的轮廓 + CoreUtils.SetRenderTarget(command, TempRTHandel); + DrawRenderer(command, settings.unlit); + settings.outline.SetTexture("_MainTex", TempRTHandel); + Blitter.BlitTexture(command, TempRTHandel, OutlineRTHandel, settings.outline, 0); + //轮廓+颜色 混合到源上 + settings.color.SetTexture("_MainTex", OutlineRTHandel); + Blit(command, ref renderingData, settings.color); + context.ExecuteCommandBuffer(command); + CommandBufferPool.Release(command); + TempRTHandel.Release(); + OutlineRTHandel?.Release(); + } + public void DrawRenderer(CommandBuffer command, Material material) { + settings.RenderObjs.RemoveAll(obj => obj == null); + for (int i = 0; i < settings.RenderObjs.Count; i++) { + Transform obj = settings.RenderObjs[i]; + if (!obj.gameObject.activeInHierarchy) { continue; } + DrawRenderer(obj, command, material); + } + } + public void DrawRenderer(Transform obj, CommandBuffer command, Material material) { + Renderer[] renderers = obj.GetComponentsInChildren(); + for (int i = 0; i < renderers.Length; i++) { + command.DrawRenderer(renderers[i], material, 0, 0); + } + if (obj.TryGetComponent(out Renderer renderer)) { + command.DrawRenderer(renderer, material, 0, 0); + } + } + } + #endregion + +} diff --git a/Assets/RenderingPipeline/Feature/OutlineRendererFeature.cs.meta b/Assets/RenderingPipeline/Feature/OutlineRendererFeature.cs.meta new file mode 100644 index 0000000..6a1fdb5 --- /dev/null +++ b/Assets/RenderingPipeline/Feature/OutlineRendererFeature.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4a94c64b69e2e9d42af70e81f06c52a1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/UIControl/Runtime/MUSliderHorizontal.cs b/Packages/UIControl/Runtime/MUSliderHorizontal.cs index 148aaaf..5424532 100644 --- a/Packages/UIControl/Runtime/MUSliderHorizontal.cs +++ b/Packages/UIControl/Runtime/MUSliderHorizontal.cs @@ -106,21 +106,15 @@ namespace MuHua { tracker.style.width = CurrentPosition; UpdateFloatField(); } - internal void UpdateFloatField(ChangeEvent evt) { - float value = Mathf.Clamp(evt.newValue, MinValue, MaxValue); - slidingValue = (value - MinValue) / (MaxValue - MinValue); - tracker.style.width = CurrentPosition; - SlidingValueChanged?.Invoke(Value); - } internal void UpdateFloatField(bool value) { isDisplayInput = value; floatField.style.display = isDisplayInput ? DisplayStyle.Flex : DisplayStyle.None; } internal void UpdateFloatField() { - floatField.SetValueWithoutNotify(Value); + floatField.value = Value; } internal float UpdateValue() { - float value = Mathf.Lerp(MinValue, MaxValue, SlidingValue); + float value = (MaxValue - MinValue) * SlidingValue; if (dataType == RoundDataType.保留两位小数) { value = (float)Math.Round(value, 2); } if (dataType == RoundDataType.整数) { value = Mathf.FloorToInt(value); } return Mathf.Clamp(value, MinValue, MaxValue); @@ -171,8 +165,6 @@ namespace MuHua { dragger.RegisterCallback((evt) => isDragger = false); dragger.RegisterCallback((evt) => isDragger = false); - floatField.RegisterCallback>(UpdateFloatField); - container.RegisterCallback(ContainerDown); } private void DraggerDown(PointerDownEvent evt) { diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index 428fcc8..134210e 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -752,7 +752,7 @@ PlayerSettings: embeddedLinuxEnableGamepadInput: 1 hmiLogStartupTiming: 0 hmiCpuConfiguration: - apiCompatibilityLevel: 6 + apiCompatibilityLevel: 3 activeInputHandler: 0 windowsGamepadBackendHint: 0 cloudProjectId: