From 18c6b4387d9393a4bb3db496202ebc621027bf39 Mon Sep 17 00:00:00 2001
From: MuHua-123 <136542559+MuHua-123@users.noreply.github.com>
Date: Thu, 25 Sep 2025 17:50:28 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A1=86=E6=9E=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Assets/AssetsPackage/物品数据/属性容器.asset | 51 ++++++++
.../物品数据/属性容器.asset.meta | 8 ++
.../DataItem.meta => ModuleAttribute.meta} | 2 +-
.../ModuleAttribute/AttributeContainer.cs | 41 +++++++
.../AttributeContainer.cs.meta | 11 ++
.../ModuleAttribute/AttributeInstance.cs | 45 +++++++
.../ModuleAttribute/AttributeInstance.cs.meta | 11 ++
.../ModuleAttribute/AttributeModifier.cs | 13 +++
.../ModuleAttribute/AttributeModifier.cs.meta | 11 ++
.../ModuleAttribute/AttributeSystem.cs | 46 ++++++++
.../ModuleAttribute/AttributeSystem.cs.meta | 11 ++
.../ModuleAttribute/AttributeType.cs | 17 +++
.../ModuleAttribute/AttributeType.cs.meta | 11 ++
.../ModuleConst.meta} | 2 +-
.../ModuleConst/ConstAttributeContainer.cs | 20 ++++
.../ConstAttributeContainer.cs.meta | 11 ++
.../ModuleConst/ConstAttributeInstance.cs | 34 ++++++
.../ConstAttributeInstance.cs.meta | 11 ++
.../ModuleAttribute/ModuleConst/Editor.meta | 8 ++
.../Editor/ConstAttributeContainerEditor.cs | 43 +++++++
.../ConstAttributeContainerEditor.cs.meta | 11 ++
.../Editor/ConstAttributeInstanceEditor.cs | 44 +++++++
.../ConstAttributeInstanceEditor.cs.meta | 11 ++
Assets/ModuleCore/ModuleEquipment.meta | 8 ++
.../Equipment.cs} | 8 +-
.../Equipment.cs.meta} | 0
.../ModuleEquipment/EquipmentAffix.cs | 19 +++
.../ModuleEquipment/EquipmentAffix.cs.meta | 11 ++
.../ModuleEquipment/EquipmentColumn.cs | 56 +++++++++
.../EquipmentColumn.cs.meta} | 0
.../ModuleEquipment/EquipmentSlot.cs | 35 ++++++
.../ModuleEquipment/EquipmentSlot.cs.meta | 11 ++
.../ModuleEquipment/ModuleConst.meta | 8 ++
.../ModuleConst}/ConstAccessory.cs | 16 +--
.../ModuleConst}/ConstAccessory.cs.meta | 0
.../ModuleConst}/ConstArmor.cs | 16 +--
.../ModuleConst}/ConstArmor.cs.meta | 0
.../ModuleConst}/ConstEquipment.cs | 2 +-
.../ModuleConst}/ConstEquipment.cs.meta | 0
.../ModuleConst}/ConstWeapon.cs | 16 +--
.../ModuleConst}/ConstWeapon.cs.meta | 0
.../ModuleEquipment/ModuleConst/Editor.meta | 8 ++
.../ModuleConst/Editor/ConstWeaponEditor.cs | 18 +++
.../Editor/ConstWeaponEditor.cs.meta | 11 ++
.../ModuleEquipment/ModuleUIPanel.meta | 8 ++
.../ModuleUIPanel/UIEquipmentColumn.cs | 53 +++++++++
.../ModuleUIPanel/UIEquipmentColumn.cs.meta} | 0
.../ModuleUIPanel/UIEquipmentSlot.cs | 64 ++++++++++
.../ModuleUIPanel/UIEquipmentSlot.cs.meta | 11 ++
Assets/ModuleCore/ModuleFormula.meta | 8 ++
.../DataMaterial.cs | 2 +-
.../DataMaterial.cs.meta | 0
.../ModuleCore/ModuleFormula/ModuleConst.meta | 8 ++
.../ModuleConst/ConstMaterial.cs | 4 +-
.../ModuleConst/ConstMaterial.cs.meta | 0
.../ModuleCore/ModuleInventory/Equipment.cs | 104 -----------------
.../ModuleCore/ModuleInventory/Inventory.cs | 38 +-----
.../ModuleInventory/InventoryDrag.cs | 21 ++++
.../ModuleInventory/InventoryDrag.cs.meta | 11 ++
.../DataItem.cs => InventoryItem.cs} | 2 +-
...DataItem.cs.meta => InventoryItem.cs.meta} | 0
.../ModuleInventory/InventorySlot.cs | 34 ++++++
.../ModuleInventory/InventorySlot.cs.meta | 11 ++
.../ModuleInventory/ModuleConst.meta | 2 +-
.../{ConstItem.cs => ConstInventoryItem.cs} | 6 +-
...tem.cs.meta => ConstInventoryItem.cs.meta} | 0
.../ModuleUIPanel/UIEquipment.cs | 110 ------------------
.../ModuleUIPanel/UIInventory.cs | 47 --------
.../{UIDragItem.cs => UIInventoryDrag.cs} | 32 ++---
...agItem.cs.meta => UIInventoryDrag.cs.meta} | 0
.../ModuleUIPanel/UIInventorySlot.cs | 53 +++++++++
.../ModuleUIPanel/UIInventorySlot.cs.meta | 11 ++
.../ModuleCore/ModuleSingle/AssetsManager.cs | 2 +-
.../ManagerItem.cs | 8 +-
.../ManagerItem.cs.meta | 0
.../ModuleCore/ModuleSingle/SingleManager.cs | 28 +----
.../ModuleUI/ModuleUIPage/UIBackpackPage.cs | 4 +-
.../ModuleUI/ModuleUISingle/UIPopupManager.cs | 4 +-
README.md | 7 +-
79 files changed, 1017 insertions(+), 392 deletions(-)
create mode 100644 Assets/AssetsPackage/物品数据/属性容器.asset
create mode 100644 Assets/AssetsPackage/物品数据/属性容器.asset.meta
rename Assets/ModuleCore/{ModuleInventory/DataItem.meta => ModuleAttribute.meta} (77%)
create mode 100644 Assets/ModuleCore/ModuleAttribute/AttributeContainer.cs
create mode 100644 Assets/ModuleCore/ModuleAttribute/AttributeContainer.cs.meta
create mode 100644 Assets/ModuleCore/ModuleAttribute/AttributeInstance.cs
create mode 100644 Assets/ModuleCore/ModuleAttribute/AttributeInstance.cs.meta
create mode 100644 Assets/ModuleCore/ModuleAttribute/AttributeModifier.cs
create mode 100644 Assets/ModuleCore/ModuleAttribute/AttributeModifier.cs.meta
create mode 100644 Assets/ModuleCore/ModuleAttribute/AttributeSystem.cs
create mode 100644 Assets/ModuleCore/ModuleAttribute/AttributeSystem.cs.meta
create mode 100644 Assets/ModuleCore/ModuleAttribute/AttributeType.cs
create mode 100644 Assets/ModuleCore/ModuleAttribute/AttributeType.cs.meta
rename Assets/ModuleCore/{ModuleInventory/ModuleConst/ConstEquipment.meta => ModuleAttribute/ModuleConst.meta} (77%)
create mode 100644 Assets/ModuleCore/ModuleAttribute/ModuleConst/ConstAttributeContainer.cs
create mode 100644 Assets/ModuleCore/ModuleAttribute/ModuleConst/ConstAttributeContainer.cs.meta
create mode 100644 Assets/ModuleCore/ModuleAttribute/ModuleConst/ConstAttributeInstance.cs
create mode 100644 Assets/ModuleCore/ModuleAttribute/ModuleConst/ConstAttributeInstance.cs.meta
create mode 100644 Assets/ModuleCore/ModuleAttribute/ModuleConst/Editor.meta
create mode 100644 Assets/ModuleCore/ModuleAttribute/ModuleConst/Editor/ConstAttributeContainerEditor.cs
create mode 100644 Assets/ModuleCore/ModuleAttribute/ModuleConst/Editor/ConstAttributeContainerEditor.cs.meta
create mode 100644 Assets/ModuleCore/ModuleAttribute/ModuleConst/Editor/ConstAttributeInstanceEditor.cs
create mode 100644 Assets/ModuleCore/ModuleAttribute/ModuleConst/Editor/ConstAttributeInstanceEditor.cs.meta
create mode 100644 Assets/ModuleCore/ModuleEquipment.meta
rename Assets/ModuleCore/{ModuleInventory/DataItem/DataEquipment.cs => ModuleEquipment/Equipment.cs} (54%)
rename Assets/ModuleCore/{ModuleInventory/DataItem/DataEquipment.cs.meta => ModuleEquipment/Equipment.cs.meta} (100%)
create mode 100644 Assets/ModuleCore/ModuleEquipment/EquipmentAffix.cs
create mode 100644 Assets/ModuleCore/ModuleEquipment/EquipmentAffix.cs.meta
create mode 100644 Assets/ModuleCore/ModuleEquipment/EquipmentColumn.cs
rename Assets/ModuleCore/{ModuleInventory/Equipment.cs.meta => ModuleEquipment/EquipmentColumn.cs.meta} (100%)
create mode 100644 Assets/ModuleCore/ModuleEquipment/EquipmentSlot.cs
create mode 100644 Assets/ModuleCore/ModuleEquipment/EquipmentSlot.cs.meta
create mode 100644 Assets/ModuleCore/ModuleEquipment/ModuleConst.meta
rename Assets/ModuleCore/{ModuleInventory/ModuleConst/ConstEquipment => ModuleEquipment/ModuleConst}/ConstAccessory.cs (86%)
rename Assets/ModuleCore/{ModuleInventory/ModuleConst/ConstEquipment => ModuleEquipment/ModuleConst}/ConstAccessory.cs.meta (100%)
rename Assets/ModuleCore/{ModuleInventory/ModuleConst/ConstEquipment => ModuleEquipment/ModuleConst}/ConstArmor.cs (86%)
rename Assets/ModuleCore/{ModuleInventory/ModuleConst/ConstEquipment => ModuleEquipment/ModuleConst}/ConstArmor.cs.meta (100%)
rename Assets/ModuleCore/{ModuleInventory/ModuleConst/ConstEquipment => ModuleEquipment/ModuleConst}/ConstEquipment.cs (73%)
rename Assets/ModuleCore/{ModuleInventory/ModuleConst/ConstEquipment => ModuleEquipment/ModuleConst}/ConstEquipment.cs.meta (100%)
rename Assets/ModuleCore/{ModuleInventory/ModuleConst/ConstEquipment => ModuleEquipment/ModuleConst}/ConstWeapon.cs (86%)
rename Assets/ModuleCore/{ModuleInventory/ModuleConst/ConstEquipment => ModuleEquipment/ModuleConst}/ConstWeapon.cs.meta (100%)
create mode 100644 Assets/ModuleCore/ModuleEquipment/ModuleConst/Editor.meta
create mode 100644 Assets/ModuleCore/ModuleEquipment/ModuleConst/Editor/ConstWeaponEditor.cs
create mode 100644 Assets/ModuleCore/ModuleEquipment/ModuleConst/Editor/ConstWeaponEditor.cs.meta
create mode 100644 Assets/ModuleCore/ModuleEquipment/ModuleUIPanel.meta
create mode 100644 Assets/ModuleCore/ModuleEquipment/ModuleUIPanel/UIEquipmentColumn.cs
rename Assets/ModuleCore/{ModuleInventory/ModuleUIPanel/UIEquipment.cs.meta => ModuleEquipment/ModuleUIPanel/UIEquipmentColumn.cs.meta} (100%)
create mode 100644 Assets/ModuleCore/ModuleEquipment/ModuleUIPanel/UIEquipmentSlot.cs
create mode 100644 Assets/ModuleCore/ModuleEquipment/ModuleUIPanel/UIEquipmentSlot.cs.meta
create mode 100644 Assets/ModuleCore/ModuleFormula.meta
rename Assets/ModuleCore/{ModuleInventory/DataItem => ModuleFormula}/DataMaterial.cs (84%)
rename Assets/ModuleCore/{ModuleInventory/DataItem => ModuleFormula}/DataMaterial.cs.meta (100%)
create mode 100644 Assets/ModuleCore/ModuleFormula/ModuleConst.meta
rename Assets/ModuleCore/{ModuleInventory => ModuleFormula}/ModuleConst/ConstMaterial.cs (81%)
rename Assets/ModuleCore/{ModuleInventory => ModuleFormula}/ModuleConst/ConstMaterial.cs.meta (100%)
delete mode 100644 Assets/ModuleCore/ModuleInventory/Equipment.cs
create mode 100644 Assets/ModuleCore/ModuleInventory/InventoryDrag.cs
create mode 100644 Assets/ModuleCore/ModuleInventory/InventoryDrag.cs.meta
rename Assets/ModuleCore/ModuleInventory/{DataItem/DataItem.cs => InventoryItem.cs} (91%)
rename Assets/ModuleCore/ModuleInventory/{DataItem/DataItem.cs.meta => InventoryItem.cs.meta} (100%)
create mode 100644 Assets/ModuleCore/ModuleInventory/InventorySlot.cs
create mode 100644 Assets/ModuleCore/ModuleInventory/InventorySlot.cs.meta
rename Assets/ModuleCore/ModuleInventory/ModuleConst/{ConstItem.cs => ConstInventoryItem.cs} (72%)
rename Assets/ModuleCore/ModuleInventory/ModuleConst/{ConstItem.cs.meta => ConstInventoryItem.cs.meta} (100%)
delete mode 100644 Assets/ModuleCore/ModuleInventory/ModuleUIPanel/UIEquipment.cs
rename Assets/ModuleCore/ModuleInventory/ModuleUIPanel/{UIDragItem.cs => UIInventoryDrag.cs} (74%)
rename Assets/ModuleCore/ModuleInventory/ModuleUIPanel/{UIDragItem.cs.meta => UIInventoryDrag.cs.meta} (100%)
create mode 100644 Assets/ModuleCore/ModuleInventory/ModuleUIPanel/UIInventorySlot.cs
create mode 100644 Assets/ModuleCore/ModuleInventory/ModuleUIPanel/UIInventorySlot.cs.meta
rename Assets/ModuleCore/{ModuleInventory => ModuleSingle}/ManagerItem.cs (78%)
rename Assets/ModuleCore/{ModuleInventory => ModuleSingle}/ManagerItem.cs.meta (100%)
diff --git a/Assets/AssetsPackage/物品数据/属性容器.asset b/Assets/AssetsPackage/物品数据/属性容器.asset
new file mode 100644
index 0000000..c5ba3ae
--- /dev/null
+++ b/Assets/AssetsPackage/物品数据/属性容器.asset
@@ -0,0 +1,51 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &-6358681353448287529
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: e891e45f4230ee04d8d329520fd39cbc, type: 3}
+ m_Name: "\u653B\u51FB\u529B"
+ m_EditorClassIdentifier:
+ type: 0
+ defaultValue: 0
+ minValue: 0
+ maxValue: 3.4028235e+38
+ container: {fileID: 11400000}
+--- !u!114 &-1377547097575584075
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: e891e45f4230ee04d8d329520fd39cbc, type: 3}
+ m_Name: "\u653B\u51FB\u901F\u5EA6"
+ m_EditorClassIdentifier:
+ type: 0
+ defaultValue: 0
+ minValue: 0
+ maxValue: 3.4028235e+38
+ container: {fileID: 11400000}
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 23403840a9d12654f8f15c6188728498, type: 3}
+ m_Name: "\u5C5E\u6027\u5BB9\u5668"
+ m_EditorClassIdentifier:
+ instances:
+ - {fileID: -1377547097575584075}
+ - {fileID: -6358681353448287529}
diff --git a/Assets/AssetsPackage/物品数据/属性容器.asset.meta b/Assets/AssetsPackage/物品数据/属性容器.asset.meta
new file mode 100644
index 0000000..4b228e4
--- /dev/null
+++ b/Assets/AssetsPackage/物品数据/属性容器.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 09e8991e4b5a20745a227d1bc138548a
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/ModuleCore/ModuleInventory/DataItem.meta b/Assets/ModuleCore/ModuleAttribute.meta
similarity index 77%
rename from Assets/ModuleCore/ModuleInventory/DataItem.meta
rename to Assets/ModuleCore/ModuleAttribute.meta
index 2f78985..a69ce00 100644
--- a/Assets/ModuleCore/ModuleInventory/DataItem.meta
+++ b/Assets/ModuleCore/ModuleAttribute.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 8a4ee71d02fa8cd40aceb7f62a6efd89
+guid: 6a2d6badedf74af4a8e4faffb6130a48
folderAsset: yes
DefaultImporter:
externalObjects: {}
diff --git a/Assets/ModuleCore/ModuleAttribute/AttributeContainer.cs b/Assets/ModuleCore/ModuleAttribute/AttributeContainer.cs
new file mode 100644
index 0000000..078a07b
--- /dev/null
+++ b/Assets/ModuleCore/ModuleAttribute/AttributeContainer.cs
@@ -0,0 +1,41 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+///
+/// 属性容器
+///
+public class AttributeContainer {
+ /// 属性字典
+ public Dictionary dictionary = new Dictionary();
+
+ /// 添加属性
+ public void AddInstance(string attributeID, AttributeInstance instance) {
+ if (dictionary.ContainsKey(attributeID)) { return; }
+ dictionary.Add(attributeID, instance);
+ }
+ /// 添加修改器
+ public void AddModifier(string attributeID, AttributeModifier mod, bool isUpdate) {
+ if (!dictionary.ContainsKey(attributeID)) { return; }
+ dictionary[attributeID].AddModifier(mod, isUpdate);
+ }
+ /// 重新计算值
+ public void RecalculateValue() {
+ foreach (var item in dictionary) { item.Value.RecalculateValue(); }
+ }
+ /// 循环属性集合
+ public void ForEach(Action action) {
+ foreach (var item in dictionary) { action?.Invoke(item.Key, item.Value); }
+ }
+ /// 查询值
+ public float FindValue(string attributeID) {
+ if (!dictionary.ContainsKey(attributeID)) { return 0; }
+ return dictionary[attributeID].currentValue;
+ }
+ /// 查询修改器
+ public List FindModifier(string attributeID) {
+ if (!dictionary.ContainsKey(attributeID)) { return new(); }
+ return dictionary[attributeID].modifiers;
+ }
+}
diff --git a/Assets/ModuleCore/ModuleAttribute/AttributeContainer.cs.meta b/Assets/ModuleCore/ModuleAttribute/AttributeContainer.cs.meta
new file mode 100644
index 0000000..4c1e746
--- /dev/null
+++ b/Assets/ModuleCore/ModuleAttribute/AttributeContainer.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 112a5ce9d53f8d2408d0f882a639982c
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/ModuleCore/ModuleAttribute/AttributeInstance.cs b/Assets/ModuleCore/ModuleAttribute/AttributeInstance.cs
new file mode 100644
index 0000000..d979c4e
--- /dev/null
+++ b/Assets/ModuleCore/ModuleAttribute/AttributeInstance.cs
@@ -0,0 +1,45 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+///
+/// 属性实例
+///
+public class AttributeInstance {
+ /// 属性名称
+ public string name;
+ /// 基础值
+ public float baseValue;
+ /// 当前值
+ public float currentValue;
+ /// 附加值%
+ public float additionValue;
+ /// 最小值
+ public float minValue;
+ /// 最大值
+ public float maxValue = float.MaxValue;
+ /// 属性类型
+ public AttributeType type;
+ /// 修改器列表
+ public List modifiers = new List();
+
+ /// 添加修改器
+ public void AddModifier(AttributeModifier mod, bool isUpdate) {
+ modifiers.Add(mod);
+ if (isUpdate) { RecalculateValue(); }
+ }
+ /// 添加修改器
+ public void AddModifier(List mods, bool isUpdate) {
+ modifiers.AddRange(mods);
+ if (isUpdate) { RecalculateValue(); }
+ }
+ /// 重新计算值
+ public void RecalculateValue() {
+ currentValue = baseValue;
+ modifiers.ForEach(mod => currentValue = mod.Fixed(currentValue));
+ additionValue = 1;
+ modifiers.ForEach(mod => additionValue = mod.Addition(additionValue));
+ currentValue = currentValue * additionValue;
+ currentValue = Mathf.Clamp(currentValue, minValue, maxValue);
+ }
+}
diff --git a/Assets/ModuleCore/ModuleAttribute/AttributeInstance.cs.meta b/Assets/ModuleCore/ModuleAttribute/AttributeInstance.cs.meta
new file mode 100644
index 0000000..bb2a546
--- /dev/null
+++ b/Assets/ModuleCore/ModuleAttribute/AttributeInstance.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 3552e7ce95869d341adbe3a4b2a98851
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/ModuleCore/ModuleAttribute/AttributeModifier.cs b/Assets/ModuleCore/ModuleAttribute/AttributeModifier.cs
new file mode 100644
index 0000000..020c51a
--- /dev/null
+++ b/Assets/ModuleCore/ModuleAttribute/AttributeModifier.cs
@@ -0,0 +1,13 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+///
+/// 属性调整
+///
+public abstract class AttributeModifier {
+ /// 固定值
+ public abstract float Fixed(float input);
+ /// 附加值%
+ public abstract float Addition(float input);
+}
diff --git a/Assets/ModuleCore/ModuleAttribute/AttributeModifier.cs.meta b/Assets/ModuleCore/ModuleAttribute/AttributeModifier.cs.meta
new file mode 100644
index 0000000..f3b7160
--- /dev/null
+++ b/Assets/ModuleCore/ModuleAttribute/AttributeModifier.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 2a544851e744f1540b431f2506157f18
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/ModuleCore/ModuleAttribute/AttributeSystem.cs b/Assets/ModuleCore/ModuleAttribute/AttributeSystem.cs
new file mode 100644
index 0000000..10a5e3e
--- /dev/null
+++ b/Assets/ModuleCore/ModuleAttribute/AttributeSystem.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using MuHua;
+
+///
+/// 属性附加
+///
+public class AttributeSystem : Module {
+ /// 修改事件
+ public static event Action OnChange;
+ /// 附加字典
+ public Dictionary dictionary = new Dictionary();
+
+ /// 应用修改
+ public void Apply() => OnChange?.Invoke(this);
+ /// 添加容器
+ public void AddInstance(string containerID, AttributeContainer container) {
+ if (dictionary.ContainsKey(containerID)) { return; }
+ dictionary.Add(containerID, container);
+ OnChange?.Invoke(this);
+ }
+ /// 添加修改器
+ public void AddModifier(string containerID, string attributeID, AttributeModifier mod, bool isUpdate) {
+ if (!dictionary.ContainsKey(containerID)) { return; }
+ dictionary[containerID].AddModifier(attributeID, mod, isUpdate);
+ OnChange?.Invoke(this);
+ }
+ /// 重新计算值
+ public void RecalculateValue() {
+ foreach (var item in dictionary) { item.Value.RecalculateValue(); }
+ }
+ /// 查询容器
+ public AttributeContainer FindContainer(string containerID) {
+ if (!dictionary.ContainsKey(containerID)) { return new(); }
+ return dictionary[containerID];
+ }
+ /// 查询容器
+ public bool TryContainer(string containerID, out AttributeContainer container) {
+ container = null;
+ if (!dictionary.ContainsKey(containerID)) { return false; }
+ container = dictionary[containerID];
+ return true;
+ }
+}
diff --git a/Assets/ModuleCore/ModuleAttribute/AttributeSystem.cs.meta b/Assets/ModuleCore/ModuleAttribute/AttributeSystem.cs.meta
new file mode 100644
index 0000000..b520475
--- /dev/null
+++ b/Assets/ModuleCore/ModuleAttribute/AttributeSystem.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 828a59f9caabfb340aa07273f42ccfa4
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/ModuleCore/ModuleAttribute/AttributeType.cs b/Assets/ModuleCore/ModuleAttribute/AttributeType.cs
new file mode 100644
index 0000000..833916d
--- /dev/null
+++ b/Assets/ModuleCore/ModuleAttribute/AttributeType.cs
@@ -0,0 +1,17 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+///
+/// 属性类型
+///
+public enum AttributeType {
+ /// 浮点数值
+ Float,
+ /// 整数值
+ Integer,
+ /// 布尔值
+ Boolean,
+ /// 百分比值
+ Percentage
+}
diff --git a/Assets/ModuleCore/ModuleAttribute/AttributeType.cs.meta b/Assets/ModuleCore/ModuleAttribute/AttributeType.cs.meta
new file mode 100644
index 0000000..dfce9e0
--- /dev/null
+++ b/Assets/ModuleCore/ModuleAttribute/AttributeType.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: bdb0856dce49d2a4cae5b351eed7ef48
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/ModuleCore/ModuleInventory/ModuleConst/ConstEquipment.meta b/Assets/ModuleCore/ModuleAttribute/ModuleConst.meta
similarity index 77%
rename from Assets/ModuleCore/ModuleInventory/ModuleConst/ConstEquipment.meta
rename to Assets/ModuleCore/ModuleAttribute/ModuleConst.meta
index 3fcf9de..5e5c914 100644
--- a/Assets/ModuleCore/ModuleInventory/ModuleConst/ConstEquipment.meta
+++ b/Assets/ModuleCore/ModuleAttribute/ModuleConst.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 681e43f413713dd46914cb6348821756
+guid: 01e61c86999f6aa40aa7742bb891014e
folderAsset: yes
DefaultImporter:
externalObjects: {}
diff --git a/Assets/ModuleCore/ModuleAttribute/ModuleConst/ConstAttributeContainer.cs b/Assets/ModuleCore/ModuleAttribute/ModuleConst/ConstAttributeContainer.cs
new file mode 100644
index 0000000..1425291
--- /dev/null
+++ b/Assets/ModuleCore/ModuleAttribute/ModuleConst/ConstAttributeContainer.cs
@@ -0,0 +1,20 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+///
+/// 属性容器 - 常量
+///
+[CreateAssetMenu(menuName = "MuHua/属性模块/属性容器")]
+public class ConstAttributeContainer : ScriptableObject {
+ /// 属性列表
+ [HideInInspector]
+ public List instances;
+
+ /// 转换数据
+ public AttributeContainer To() {
+ AttributeContainer container = new AttributeContainer();
+ instances.ForEach(obj => container.AddInstance(obj.name, obj.To()));
+ return container;
+ }
+}
diff --git a/Assets/ModuleCore/ModuleAttribute/ModuleConst/ConstAttributeContainer.cs.meta b/Assets/ModuleCore/ModuleAttribute/ModuleConst/ConstAttributeContainer.cs.meta
new file mode 100644
index 0000000..d55435e
--- /dev/null
+++ b/Assets/ModuleCore/ModuleAttribute/ModuleConst/ConstAttributeContainer.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 23403840a9d12654f8f15c6188728498
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/ModuleCore/ModuleAttribute/ModuleConst/ConstAttributeInstance.cs b/Assets/ModuleCore/ModuleAttribute/ModuleConst/ConstAttributeInstance.cs
new file mode 100644
index 0000000..b22ebcf
--- /dev/null
+++ b/Assets/ModuleCore/ModuleAttribute/ModuleConst/ConstAttributeInstance.cs
@@ -0,0 +1,34 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+///
+/// 属性实例 - 常量
+///
+[CreateAssetMenu(menuName = "MuHua/属性模块/属性实例")]
+public class ConstAttributeInstance : ScriptableObject {
+ /// 属性类型
+ public AttributeType type;
+ /// 默认值
+ public float defaultValue;
+ /// 最小值
+ public float minValue;
+ /// 最大值
+ public float maxValue = float.MaxValue;
+
+ /// 属性容器
+ [HideInInspector]
+ public ConstAttributeContainer container;
+
+ /// 转换数据
+ public AttributeInstance To() {
+ AttributeInstance instance = new AttributeInstance();
+ instance.type = type;
+ instance.name = name;
+ instance.baseValue = defaultValue;
+ instance.currentValue = defaultValue;
+ instance.minValue = minValue;
+ instance.maxValue = maxValue;
+ return instance;
+ }
+}
diff --git a/Assets/ModuleCore/ModuleAttribute/ModuleConst/ConstAttributeInstance.cs.meta b/Assets/ModuleCore/ModuleAttribute/ModuleConst/ConstAttributeInstance.cs.meta
new file mode 100644
index 0000000..8e39ae2
--- /dev/null
+++ b/Assets/ModuleCore/ModuleAttribute/ModuleConst/ConstAttributeInstance.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: e891e45f4230ee04d8d329520fd39cbc
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/ModuleCore/ModuleAttribute/ModuleConst/Editor.meta b/Assets/ModuleCore/ModuleAttribute/ModuleConst/Editor.meta
new file mode 100644
index 0000000..5f4d21b
--- /dev/null
+++ b/Assets/ModuleCore/ModuleAttribute/ModuleConst/Editor.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: d96c081aa34edfb4d9197a0bfb23858c
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/ModuleCore/ModuleAttribute/ModuleConst/Editor/ConstAttributeContainerEditor.cs b/Assets/ModuleCore/ModuleAttribute/ModuleConst/Editor/ConstAttributeContainerEditor.cs
new file mode 100644
index 0000000..a61e43f
--- /dev/null
+++ b/Assets/ModuleCore/ModuleAttribute/ModuleConst/Editor/ConstAttributeContainerEditor.cs
@@ -0,0 +1,43 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEditor;
+
+///
+/// 属性容器 - 自定义编辑器
+///
+[CustomEditor(typeof(ConstAttributeContainer))]
+public class ConstAttributeContainerEditor : Editor {
+
+ private ConstAttributeContainer container;
+
+ private void Awake() => container = target as ConstAttributeContainer;
+
+ public override void OnInspectorGUI() {
+ base.OnInspectorGUI();
+ if (GUILayout.Button("创建属性")) { GenerateAttribute(); }
+ if (GUILayout.Button("删除属性")) { DeleteInstance(); }
+ }
+
+ /// 创建属性实例
+ private void GenerateAttribute() {
+ ConstAttributeInstance instance = CreateInstance();
+ instance.container = container;
+ // 加入容器
+ container.instances.Add(instance);
+ AssetDatabase.AddObjectToAsset(instance, container);
+ EditorUtility.SetDirty(instance);
+ EditorUtility.SetDirty(container);
+ AssetDatabase.SaveAssets();
+ }
+ /// 删除全部实例
+ private void DeleteInstance() {
+ for (int i = container.instances.Count; i-- > 0;) {
+ ConstAttributeInstance instance = container.instances[i];
+ container.instances.Remove(instance);
+ Undo.DestroyObjectImmediate(instance);
+ }
+ EditorUtility.SetDirty(container);
+ AssetDatabase.SaveAssets();
+ }
+}
diff --git a/Assets/ModuleCore/ModuleAttribute/ModuleConst/Editor/ConstAttributeContainerEditor.cs.meta b/Assets/ModuleCore/ModuleAttribute/ModuleConst/Editor/ConstAttributeContainerEditor.cs.meta
new file mode 100644
index 0000000..973f07a
--- /dev/null
+++ b/Assets/ModuleCore/ModuleAttribute/ModuleConst/Editor/ConstAttributeContainerEditor.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d8ae6bbae674e19448216fd6b41cd012
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/ModuleCore/ModuleAttribute/ModuleConst/Editor/ConstAttributeInstanceEditor.cs b/Assets/ModuleCore/ModuleAttribute/ModuleConst/Editor/ConstAttributeInstanceEditor.cs
new file mode 100644
index 0000000..ec8eb63
--- /dev/null
+++ b/Assets/ModuleCore/ModuleAttribute/ModuleConst/Editor/ConstAttributeInstanceEditor.cs
@@ -0,0 +1,44 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEditor;
+
+///
+/// 属性实例 - 自定义编辑器
+///
+[CustomEditor(typeof(ConstAttributeInstance))]
+public class ConstAttributeInstanceEditor : Editor {
+
+ private ConstAttributeInstance instance;
+
+ private void Awake() => instance = target as ConstAttributeInstance;
+
+ public override void OnInspectorGUI() {
+ base.OnInspectorGUI();
+ if (instance.container == null) { return; }
+ EditorGUILayout.Space(20);
+
+ // 输入字段修改 name
+ EditorGUI.BeginChangeCheck();
+ string newName = EditorGUILayout.TextField("属性名称", instance.name);
+ if (EditorGUI.EndChangeCheck()) { ModifyName(newName); }
+ // 按钮功能
+ if (GUILayout.Button("删除属性")) { DeleteInstance(); }
+ }
+
+ /// 修改名字
+ private void ModifyName(string newName) {
+ instance.name = newName;
+ Undo.RecordObject(instance, "修改属性名称");
+ EditorUtility.SetDirty(instance);
+ AssetDatabase.SaveAssets();
+ }
+ /// 删除实例
+ private void DeleteInstance() {
+ ConstAttributeContainer container = instance.container;
+ container.instances.Remove(instance);
+ EditorUtility.SetDirty(container);
+ Undo.DestroyObjectImmediate(instance);
+ AssetDatabase.SaveAssets();
+ }
+}
diff --git a/Assets/ModuleCore/ModuleAttribute/ModuleConst/Editor/ConstAttributeInstanceEditor.cs.meta b/Assets/ModuleCore/ModuleAttribute/ModuleConst/Editor/ConstAttributeInstanceEditor.cs.meta
new file mode 100644
index 0000000..8bc3ce7
--- /dev/null
+++ b/Assets/ModuleCore/ModuleAttribute/ModuleConst/Editor/ConstAttributeInstanceEditor.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 1e2db82f02928494990b89396707863b
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/ModuleCore/ModuleEquipment.meta b/Assets/ModuleCore/ModuleEquipment.meta
new file mode 100644
index 0000000..bc0c70b
--- /dev/null
+++ b/Assets/ModuleCore/ModuleEquipment.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 51f470ac3872ca44f9c8d012857bda7b
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/ModuleCore/ModuleInventory/DataItem/DataEquipment.cs b/Assets/ModuleCore/ModuleEquipment/Equipment.cs
similarity index 54%
rename from Assets/ModuleCore/ModuleInventory/DataItem/DataEquipment.cs
rename to Assets/ModuleCore/ModuleEquipment/Equipment.cs
index 1663a85..ab3582f 100644
--- a/Assets/ModuleCore/ModuleInventory/DataItem/DataEquipment.cs
+++ b/Assets/ModuleCore/ModuleEquipment/Equipment.cs
@@ -3,9 +3,11 @@ using System.Collections.Generic;
using UnityEngine;
///
-/// 装备 - 物品
+/// 装备
///
-public class DataEquipment : DataItem {
+public class Equipment : InventoryItem {
/// 装备类型 (类型1/类型2)
public string type;
-}
+ /// 词缀列表
+ public List affixes = new List();
+}
\ No newline at end of file
diff --git a/Assets/ModuleCore/ModuleInventory/DataItem/DataEquipment.cs.meta b/Assets/ModuleCore/ModuleEquipment/Equipment.cs.meta
similarity index 100%
rename from Assets/ModuleCore/ModuleInventory/DataItem/DataEquipment.cs.meta
rename to Assets/ModuleCore/ModuleEquipment/Equipment.cs.meta
diff --git a/Assets/ModuleCore/ModuleEquipment/EquipmentAffix.cs b/Assets/ModuleCore/ModuleEquipment/EquipmentAffix.cs
new file mode 100644
index 0000000..467435b
--- /dev/null
+++ b/Assets/ModuleCore/ModuleEquipment/EquipmentAffix.cs
@@ -0,0 +1,19 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+///
+/// 装备词缀
+///
+public class EquipmentAffix {
+ /// 名字
+ public string name;
+ /// 数值
+ public float value;
+ /// 最大值
+ public float minValue;
+ /// 最小值
+ public float maxValue = float.MaxValue;
+ /// 属性类型
+ public AttributeType attributeType;
+}
diff --git a/Assets/ModuleCore/ModuleEquipment/EquipmentAffix.cs.meta b/Assets/ModuleCore/ModuleEquipment/EquipmentAffix.cs.meta
new file mode 100644
index 0000000..79ac77c
--- /dev/null
+++ b/Assets/ModuleCore/ModuleEquipment/EquipmentAffix.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 9eb47618daf43564cbc94b780e6b03f0
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/ModuleCore/ModuleEquipment/EquipmentColumn.cs b/Assets/ModuleCore/ModuleEquipment/EquipmentColumn.cs
new file mode 100644
index 0000000..230333b
--- /dev/null
+++ b/Assets/ModuleCore/ModuleEquipment/EquipmentColumn.cs
@@ -0,0 +1,56 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+///
+/// 装备栏
+///
+public class EquipmentColumn {
+ /// 插槽字典
+ public Dictionary dictionary = new Dictionary();
+
+ /// 索引器
+ public EquipmentSlot this[string key] => dictionary[key];
+
+ public EquipmentColumn() {
+ AddSlot(new EquipmentSlot(EquipmentSlotType.主手, VerifyWeapon));
+ AddSlot(new EquipmentSlot(EquipmentSlotType.副手, VerifyDeputy));
+
+ AddSlot(new EquipmentSlot(EquipmentSlotType.上衣, (equipment) => VerifyCommon(equipment, ArmorType.上衣.ToString())));
+ AddSlot(new EquipmentSlot(EquipmentSlotType.头盔, (equipment) => VerifyCommon(equipment, ArmorType.头盔.ToString())));
+ AddSlot(new EquipmentSlot(EquipmentSlotType.手套, (equipment) => VerifyCommon(equipment, ArmorType.手套.ToString())));
+ AddSlot(new EquipmentSlot(EquipmentSlotType.腰带, (equipment) => VerifyCommon(equipment, ArmorType.腰带.ToString())));
+ AddSlot(new EquipmentSlot(EquipmentSlotType.鞋子, (equipment) => VerifyCommon(equipment, ArmorType.鞋子.ToString())));
+
+ AddSlot(new EquipmentSlot(EquipmentSlotType.项链, (equipment) => VerifyCommon(equipment, AccessoryType.项链.ToString())));
+ AddSlot(new EquipmentSlot(EquipmentSlotType.戒指1, (equipment) => VerifyCommon(equipment, AccessoryType.戒指.ToString())));
+ AddSlot(new EquipmentSlot(EquipmentSlotType.戒指2, (equipment) => VerifyCommon(equipment, AccessoryType.戒指.ToString())));
+ AddSlot(new EquipmentSlot(EquipmentSlotType.手镯1, (equipment) => VerifyCommon(equipment, AccessoryType.手镯.ToString())));
+ AddSlot(new EquipmentSlot(EquipmentSlotType.手镯2, (equipment) => VerifyCommon(equipment, AccessoryType.手镯.ToString())));
+ }
+
+ public bool ContainsKey(string key) => dictionary.ContainsKey(key);
+ /// 添加插槽
+ public void AddSlot(EquipmentSlot slot) => dictionary.Add(slot.name, slot);
+
+ /// 通用校验
+ public static bool VerifyCommon(Equipment equipment, string type) {
+ string[] types = equipment.type.Split("/");
+ if (types[0] == type) { return true; }
+ return false;
+ }
+ /// 主手校验
+ public static bool VerifyWeapon(Equipment equipment) {
+ string[] type = equipment.type.Split("/");
+ if (type[0] == WeaponType.单手.ToString()) { return true; }
+ if (type[0] == WeaponType.双手.ToString()) { return true; }
+ return false;
+ }
+ /// 副手校验
+ public static bool VerifyDeputy(Equipment equipment) {
+ string[] type = equipment.type.Split("/");
+ if (type[0] == WeaponType.副手.ToString()) { return true; }
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/Assets/ModuleCore/ModuleInventory/Equipment.cs.meta b/Assets/ModuleCore/ModuleEquipment/EquipmentColumn.cs.meta
similarity index 100%
rename from Assets/ModuleCore/ModuleInventory/Equipment.cs.meta
rename to Assets/ModuleCore/ModuleEquipment/EquipmentColumn.cs.meta
diff --git a/Assets/ModuleCore/ModuleEquipment/EquipmentSlot.cs b/Assets/ModuleCore/ModuleEquipment/EquipmentSlot.cs
new file mode 100644
index 0000000..06f4bb0
--- /dev/null
+++ b/Assets/ModuleCore/ModuleEquipment/EquipmentSlot.cs
@@ -0,0 +1,35 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+///
+/// 插槽类型
+///
+public enum EquipmentSlotType {
+ 主手, 副手, 上衣, 项链,
+ 头盔, 手套, 腰带, 鞋子,
+ 戒指1, 戒指2, 手镯1, 手镯2
+}
+///
+/// 装备插槽
+///
+public class EquipmentSlot {
+ /// 名字
+ public string name;
+ /// 物品
+ public Equipment item;
+ /// 装备验证
+ public Func verify;
+
+ public EquipmentSlot(EquipmentSlotType slot, Func verify) {
+ name = slot.ToString();
+ this.verify = verify;
+ }
+
+ /// 设置
+ public void Settings(InventoryItem item) {
+ if (item is Equipment equipment) { this.item = equipment; }
+ else { this.item = null; }
+ }
+}
diff --git a/Assets/ModuleCore/ModuleEquipment/EquipmentSlot.cs.meta b/Assets/ModuleCore/ModuleEquipment/EquipmentSlot.cs.meta
new file mode 100644
index 0000000..bd56ee2
--- /dev/null
+++ b/Assets/ModuleCore/ModuleEquipment/EquipmentSlot.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: f1d68199e9959734e85efd7a39d4d78c
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/ModuleCore/ModuleEquipment/ModuleConst.meta b/Assets/ModuleCore/ModuleEquipment/ModuleConst.meta
new file mode 100644
index 0000000..cb05ab2
--- /dev/null
+++ b/Assets/ModuleCore/ModuleEquipment/ModuleConst.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e0cd838d2a0877c4780133f6dcb808f3
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/ModuleCore/ModuleInventory/ModuleConst/ConstEquipment/ConstAccessory.cs b/Assets/ModuleCore/ModuleEquipment/ModuleConst/ConstAccessory.cs
similarity index 86%
rename from Assets/ModuleCore/ModuleInventory/ModuleConst/ConstEquipment/ConstAccessory.cs
rename to Assets/ModuleCore/ModuleEquipment/ModuleConst/ConstAccessory.cs
index 4ddb506..fc11383 100644
--- a/Assets/ModuleCore/ModuleInventory/ModuleConst/ConstEquipment/ConstAccessory.cs
+++ b/Assets/ModuleCore/ModuleEquipment/ModuleConst/ConstAccessory.cs
@@ -2,6 +2,12 @@ using System.Collections;
using System.Collections.Generic;
using UnityEngine;
+///
+/// 饰品类型
+///
+public enum AccessoryType {
+ 戒指, 手镯, 项链
+}
///
/// 饰品 - 物品常量
///
@@ -10,17 +16,11 @@ public class ConstAccessory : ConstEquipment {
/// 饰品类型
public AccessoryType type;
- public override DataItem To() {
- DataEquipment item = new DataEquipment();
+ public override InventoryItem To() {
+ Equipment item = new Equipment();
item.name = name;
item.sprite = sprite;
item.type = type.ToString();
return item;
}
}
-///
-/// 饰品类型
-///
-public enum AccessoryType {
- 戒指, 手镯, 项链
-}
\ No newline at end of file
diff --git a/Assets/ModuleCore/ModuleInventory/ModuleConst/ConstEquipment/ConstAccessory.cs.meta b/Assets/ModuleCore/ModuleEquipment/ModuleConst/ConstAccessory.cs.meta
similarity index 100%
rename from Assets/ModuleCore/ModuleInventory/ModuleConst/ConstEquipment/ConstAccessory.cs.meta
rename to Assets/ModuleCore/ModuleEquipment/ModuleConst/ConstAccessory.cs.meta
diff --git a/Assets/ModuleCore/ModuleInventory/ModuleConst/ConstEquipment/ConstArmor.cs b/Assets/ModuleCore/ModuleEquipment/ModuleConst/ConstArmor.cs
similarity index 86%
rename from Assets/ModuleCore/ModuleInventory/ModuleConst/ConstEquipment/ConstArmor.cs
rename to Assets/ModuleCore/ModuleEquipment/ModuleConst/ConstArmor.cs
index 4ffd4d8..1c7a83e 100644
--- a/Assets/ModuleCore/ModuleInventory/ModuleConst/ConstEquipment/ConstArmor.cs
+++ b/Assets/ModuleCore/ModuleEquipment/ModuleConst/ConstArmor.cs
@@ -2,6 +2,12 @@ using System.Collections;
using System.Collections.Generic;
using UnityEngine;
+///
+/// 护甲类型
+///
+public enum ArmorType {
+ 上衣, 头盔, 手套, 腰带, 鞋子
+}
///
/// 护甲 - 物品常量
///
@@ -10,17 +16,11 @@ public class ConstArmor : ConstEquipment {
/// 护甲类型
public ArmorType type;
- public override DataItem To() {
- DataEquipment item = new DataEquipment();
+ public override InventoryItem To() {
+ Equipment item = new Equipment();
item.name = name;
item.sprite = sprite;
item.type = type.ToString();
return item;
}
}
-///
-/// 护甲类型
-///
-public enum ArmorType {
- 上衣, 头盔, 手套, 腰带, 鞋子
-}
\ No newline at end of file
diff --git a/Assets/ModuleCore/ModuleInventory/ModuleConst/ConstEquipment/ConstArmor.cs.meta b/Assets/ModuleCore/ModuleEquipment/ModuleConst/ConstArmor.cs.meta
similarity index 100%
rename from Assets/ModuleCore/ModuleInventory/ModuleConst/ConstEquipment/ConstArmor.cs.meta
rename to Assets/ModuleCore/ModuleEquipment/ModuleConst/ConstArmor.cs.meta
diff --git a/Assets/ModuleCore/ModuleInventory/ModuleConst/ConstEquipment/ConstEquipment.cs b/Assets/ModuleCore/ModuleEquipment/ModuleConst/ConstEquipment.cs
similarity index 73%
rename from Assets/ModuleCore/ModuleInventory/ModuleConst/ConstEquipment/ConstEquipment.cs
rename to Assets/ModuleCore/ModuleEquipment/ModuleConst/ConstEquipment.cs
index 2c66a40..27d62bf 100644
--- a/Assets/ModuleCore/ModuleInventory/ModuleConst/ConstEquipment/ConstEquipment.cs
+++ b/Assets/ModuleCore/ModuleEquipment/ModuleConst/ConstEquipment.cs
@@ -5,6 +5,6 @@ using UnityEngine;
///
/// 装备 - 物品常量
///
-public class ConstEquipment : ConstItem {
+public class ConstEquipment : ConstInventoryItem {
}
diff --git a/Assets/ModuleCore/ModuleInventory/ModuleConst/ConstEquipment/ConstEquipment.cs.meta b/Assets/ModuleCore/ModuleEquipment/ModuleConst/ConstEquipment.cs.meta
similarity index 100%
rename from Assets/ModuleCore/ModuleInventory/ModuleConst/ConstEquipment/ConstEquipment.cs.meta
rename to Assets/ModuleCore/ModuleEquipment/ModuleConst/ConstEquipment.cs.meta
diff --git a/Assets/ModuleCore/ModuleInventory/ModuleConst/ConstEquipment/ConstWeapon.cs b/Assets/ModuleCore/ModuleEquipment/ModuleConst/ConstWeapon.cs
similarity index 86%
rename from Assets/ModuleCore/ModuleInventory/ModuleConst/ConstEquipment/ConstWeapon.cs
rename to Assets/ModuleCore/ModuleEquipment/ModuleConst/ConstWeapon.cs
index 7d9ce69..bf0e197 100644
--- a/Assets/ModuleCore/ModuleInventory/ModuleConst/ConstEquipment/ConstWeapon.cs
+++ b/Assets/ModuleCore/ModuleEquipment/ModuleConst/ConstWeapon.cs
@@ -2,6 +2,12 @@ using System.Collections;
using System.Collections.Generic;
using UnityEngine;
+///
+/// 武器类型
+///
+public enum WeaponType {
+ 单手, 副手, 双手
+}
///
/// 武器 - 物品常量
///
@@ -10,17 +16,11 @@ public class ConstWeapon : ConstEquipment {
/// 武器类型
public WeaponType type;
- public override DataItem To() {
- DataEquipment item = new DataEquipment();
+ public override InventoryItem To() {
+ Equipment item = new Equipment();
item.name = name;
item.sprite = sprite;
item.type = type.ToString();
return item;
}
}
-///
-/// 武器类型
-///
-public enum WeaponType {
- 单手, 副手, 双手
-}
\ No newline at end of file
diff --git a/Assets/ModuleCore/ModuleInventory/ModuleConst/ConstEquipment/ConstWeapon.cs.meta b/Assets/ModuleCore/ModuleEquipment/ModuleConst/ConstWeapon.cs.meta
similarity index 100%
rename from Assets/ModuleCore/ModuleInventory/ModuleConst/ConstEquipment/ConstWeapon.cs.meta
rename to Assets/ModuleCore/ModuleEquipment/ModuleConst/ConstWeapon.cs.meta
diff --git a/Assets/ModuleCore/ModuleEquipment/ModuleConst/Editor.meta b/Assets/ModuleCore/ModuleEquipment/ModuleConst/Editor.meta
new file mode 100644
index 0000000..0774415
--- /dev/null
+++ b/Assets/ModuleCore/ModuleEquipment/ModuleConst/Editor.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: f49fabc8e03afc44bb1b5ea3fca16255
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/ModuleCore/ModuleEquipment/ModuleConst/Editor/ConstWeaponEditor.cs b/Assets/ModuleCore/ModuleEquipment/ModuleConst/Editor/ConstWeaponEditor.cs
new file mode 100644
index 0000000..45f8bbe
--- /dev/null
+++ b/Assets/ModuleCore/ModuleEquipment/ModuleConst/Editor/ConstWeaponEditor.cs
@@ -0,0 +1,18 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class ConstWeaponEditor : MonoBehaviour
+{
+ // Start is called before the first frame update
+ void Start()
+ {
+
+ }
+
+ // Update is called once per frame
+ void Update()
+ {
+
+ }
+}
diff --git a/Assets/ModuleCore/ModuleEquipment/ModuleConst/Editor/ConstWeaponEditor.cs.meta b/Assets/ModuleCore/ModuleEquipment/ModuleConst/Editor/ConstWeaponEditor.cs.meta
new file mode 100644
index 0000000..343e7a3
--- /dev/null
+++ b/Assets/ModuleCore/ModuleEquipment/ModuleConst/Editor/ConstWeaponEditor.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: b2c69e4ee377a7f48934adc2c8d6359f
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/ModuleCore/ModuleEquipment/ModuleUIPanel.meta b/Assets/ModuleCore/ModuleEquipment/ModuleUIPanel.meta
new file mode 100644
index 0000000..a00ce3d
--- /dev/null
+++ b/Assets/ModuleCore/ModuleEquipment/ModuleUIPanel.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: ce2626e82921eb14992661fc763dc7b5
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/ModuleCore/ModuleEquipment/ModuleUIPanel/UIEquipmentColumn.cs b/Assets/ModuleCore/ModuleEquipment/ModuleUIPanel/UIEquipmentColumn.cs
new file mode 100644
index 0000000..18ec1fe
--- /dev/null
+++ b/Assets/ModuleCore/ModuleEquipment/ModuleUIPanel/UIEquipmentColumn.cs
@@ -0,0 +1,53 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UIElements;
+using MuHua;
+
+///
+/// UI装备栏
+///
+public class UIEquipmentColumn : ModuleUIPanel {
+
+ public EquipmentColumn equipment;
+ /// 插槽字典
+ public Dictionary dictionary = new Dictionary();
+
+ public UIEquipmentColumn(VisualElement element) : base(element) {
+ InitialSlot(1, EquipmentSlotType.主手);
+ InitialSlot(2, EquipmentSlotType.副手);
+ InitialSlot(3, EquipmentSlotType.上衣);
+ InitialSlot(4, EquipmentSlotType.项链);
+
+ InitialSlot(5, EquipmentSlotType.戒指1);
+ InitialSlot(6, EquipmentSlotType.戒指2);
+ InitialSlot(7, EquipmentSlotType.手镯1);
+ InitialSlot(8, EquipmentSlotType.手镯2);
+
+ InitialSlot(9, EquipmentSlotType.头盔);
+ InitialSlot(10, EquipmentSlotType.手套);
+ InitialSlot(11, EquipmentSlotType.腰带);
+ InitialSlot(12, EquipmentSlotType.鞋子);
+ }
+ public void Dispose() {
+
+ }
+
+ public void Settings(EquipmentColumn equipment) {
+ if (this.equipment != null) { Dispose(); }
+ this.equipment = equipment;
+ if (equipment == null) { return; }
+ foreach (var item in dictionary) { Settings(item.Key, item.Value); }
+ }
+ public void Settings(string key, UIEquipmentSlot uISlot) {
+ if (!equipment.ContainsKey(key)) { return; }
+ EquipmentSlot slot = equipment[key];
+ uISlot.Settings(slot);
+ }
+
+ private void InitialSlot(int index, EquipmentSlotType type) {
+ VisualElement element = Q($"EquipmentSlot{index}");
+ UIEquipmentSlot uiSlot = new UIEquipmentSlot(element);
+ dictionary.Add(type.ToString(), uiSlot);
+ }
+}
diff --git a/Assets/ModuleCore/ModuleInventory/ModuleUIPanel/UIEquipment.cs.meta b/Assets/ModuleCore/ModuleEquipment/ModuleUIPanel/UIEquipmentColumn.cs.meta
similarity index 100%
rename from Assets/ModuleCore/ModuleInventory/ModuleUIPanel/UIEquipment.cs.meta
rename to Assets/ModuleCore/ModuleEquipment/ModuleUIPanel/UIEquipmentColumn.cs.meta
diff --git a/Assets/ModuleCore/ModuleEquipment/ModuleUIPanel/UIEquipmentSlot.cs b/Assets/ModuleCore/ModuleEquipment/ModuleUIPanel/UIEquipmentSlot.cs
new file mode 100644
index 0000000..c1d5f7d
--- /dev/null
+++ b/Assets/ModuleCore/ModuleEquipment/ModuleUIPanel/UIEquipmentSlot.cs
@@ -0,0 +1,64 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UIElements;
+using MuHua;
+
+///
+/// UI装备插槽
+///
+public class UIEquipmentSlot : ModuleUIPanel, InventoryDrag {
+
+ public EquipmentSlot value;
+
+ public Label CountLabel => Q