diff --git a/Assets/ModuleCore/ModuleAttribute/ModuleConst.meta b/Assets/AssetsEquipment.meta similarity index 77% rename from Assets/ModuleCore/ModuleAttribute/ModuleConst.meta rename to Assets/AssetsEquipment.meta index 5e5c914..7f15c84 100644 --- a/Assets/ModuleCore/ModuleAttribute/ModuleConst.meta +++ b/Assets/AssetsEquipment.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 01e61c86999f6aa40aa7742bb891014e +guid: ca01e5dfb1bcb40409d89324b7b30e0c folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/ModuleCore/ModuleInventory/ModuleConst.meta b/Assets/AssetsEquipment/ScriptableObject.meta similarity index 77% rename from Assets/ModuleCore/ModuleInventory/ModuleConst.meta rename to Assets/AssetsEquipment/ScriptableObject.meta index b803457..e9d5387 100644 --- a/Assets/ModuleCore/ModuleInventory/ModuleConst.meta +++ b/Assets/AssetsEquipment/ScriptableObject.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 48193b9c6d7c6af4088a00876ccaa1c3 +guid: 6c3f4d86bebc21a459dcdb9549d00c17 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/AssetsPackage/物品数据/护甲.meta b/Assets/AssetsEquipment/ScriptableObject/护甲.meta similarity index 100% rename from Assets/AssetsPackage/物品数据/护甲.meta rename to Assets/AssetsEquipment/ScriptableObject/护甲.meta diff --git a/Assets/ModuleCore/ModuleFormula/ModuleConst.meta b/Assets/AssetsEquipment/ScriptableObject/护甲/上衣.meta similarity index 77% rename from Assets/ModuleCore/ModuleFormula/ModuleConst.meta rename to Assets/AssetsEquipment/ScriptableObject/护甲/上衣.meta index f0a87f5..07eaf18 100644 --- a/Assets/ModuleCore/ModuleFormula/ModuleConst.meta +++ b/Assets/AssetsEquipment/ScriptableObject/护甲/上衣.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 9871787cca5a9e54fab450c7d3674d69 +guid: 50ec3141d8da2214eacd8fcf7ea8428b folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/AssetsPackage/物品数据/护甲/上衣.asset b/Assets/AssetsEquipment/ScriptableObject/护甲/上衣/上衣.asset similarity index 100% rename from Assets/AssetsPackage/物品数据/护甲/上衣.asset rename to Assets/AssetsEquipment/ScriptableObject/护甲/上衣/上衣.asset diff --git a/Assets/AssetsPackage/物品数据/护甲/上衣.asset.meta b/Assets/AssetsEquipment/ScriptableObject/护甲/上衣/上衣.asset.meta similarity index 100% rename from Assets/AssetsPackage/物品数据/护甲/上衣.asset.meta rename to Assets/AssetsEquipment/ScriptableObject/护甲/上衣/上衣.asset.meta diff --git a/Assets/AssetsEquipment/ScriptableObject/护甲/头盔.meta b/Assets/AssetsEquipment/ScriptableObject/护甲/头盔.meta new file mode 100644 index 0000000..6372512 --- /dev/null +++ b/Assets/AssetsEquipment/ScriptableObject/护甲/头盔.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7f7ce98abf5cf1242bcaf87f8e07e3f9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AssetsPackage/物品数据/护甲/头盔.asset b/Assets/AssetsEquipment/ScriptableObject/护甲/头盔/头盔.asset similarity index 100% rename from Assets/AssetsPackage/物品数据/护甲/头盔.asset rename to Assets/AssetsEquipment/ScriptableObject/护甲/头盔/头盔.asset diff --git a/Assets/AssetsPackage/物品数据/护甲/头盔.asset.meta b/Assets/AssetsEquipment/ScriptableObject/护甲/头盔/头盔.asset.meta similarity index 100% rename from Assets/AssetsPackage/物品数据/护甲/头盔.asset.meta rename to Assets/AssetsEquipment/ScriptableObject/护甲/头盔/头盔.asset.meta diff --git a/Assets/AssetsEquipment/ScriptableObject/护甲/手套.meta b/Assets/AssetsEquipment/ScriptableObject/护甲/手套.meta new file mode 100644 index 0000000..c0930b6 --- /dev/null +++ b/Assets/AssetsEquipment/ScriptableObject/护甲/手套.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fd9b18780ad93c44dbede85c81c63d25 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AssetsPackage/物品数据/护甲/手套.asset b/Assets/AssetsEquipment/ScriptableObject/护甲/手套/手套.asset similarity index 100% rename from Assets/AssetsPackage/物品数据/护甲/手套.asset rename to Assets/AssetsEquipment/ScriptableObject/护甲/手套/手套.asset diff --git a/Assets/AssetsPackage/物品数据/护甲/手套.asset.meta b/Assets/AssetsEquipment/ScriptableObject/护甲/手套/手套.asset.meta similarity index 100% rename from Assets/AssetsPackage/物品数据/护甲/手套.asset.meta rename to Assets/AssetsEquipment/ScriptableObject/护甲/手套/手套.asset.meta diff --git a/Assets/AssetsEquipment/ScriptableObject/护甲/腰带.meta b/Assets/AssetsEquipment/ScriptableObject/护甲/腰带.meta new file mode 100644 index 0000000..4bcebaa --- /dev/null +++ b/Assets/AssetsEquipment/ScriptableObject/护甲/腰带.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 66704a169cf4fd94cb18d2c1d132173a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AssetsPackage/物品数据/护甲/腰带.asset b/Assets/AssetsEquipment/ScriptableObject/护甲/腰带/腰带.asset similarity index 100% rename from Assets/AssetsPackage/物品数据/护甲/腰带.asset rename to Assets/AssetsEquipment/ScriptableObject/护甲/腰带/腰带.asset diff --git a/Assets/AssetsPackage/物品数据/护甲/腰带.asset.meta b/Assets/AssetsEquipment/ScriptableObject/护甲/腰带/腰带.asset.meta similarity index 100% rename from Assets/AssetsPackage/物品数据/护甲/腰带.asset.meta rename to Assets/AssetsEquipment/ScriptableObject/护甲/腰带/腰带.asset.meta diff --git a/Assets/AssetsEquipment/ScriptableObject/护甲/鞋子.meta b/Assets/AssetsEquipment/ScriptableObject/护甲/鞋子.meta new file mode 100644 index 0000000..4c2a660 --- /dev/null +++ b/Assets/AssetsEquipment/ScriptableObject/护甲/鞋子.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f79ff4ff8b66add4a8beda06e918ea16 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AssetsPackage/物品数据/护甲/鞋子.asset b/Assets/AssetsEquipment/ScriptableObject/护甲/鞋子/鞋子.asset similarity index 100% rename from Assets/AssetsPackage/物品数据/护甲/鞋子.asset rename to Assets/AssetsEquipment/ScriptableObject/护甲/鞋子/鞋子.asset diff --git a/Assets/AssetsPackage/物品数据/护甲/鞋子.asset.meta b/Assets/AssetsEquipment/ScriptableObject/护甲/鞋子/鞋子.asset.meta similarity index 100% rename from Assets/AssetsPackage/物品数据/护甲/鞋子.asset.meta rename to Assets/AssetsEquipment/ScriptableObject/护甲/鞋子/鞋子.asset.meta diff --git a/Assets/AssetsPackage/物品数据/武器.meta b/Assets/AssetsEquipment/ScriptableObject/武器.meta similarity index 100% rename from Assets/AssetsPackage/物品数据/武器.meta rename to Assets/AssetsEquipment/ScriptableObject/武器.meta diff --git a/Assets/AssetsEquipment/ScriptableObject/武器/副手.meta b/Assets/AssetsEquipment/ScriptableObject/武器/副手.meta new file mode 100644 index 0000000..df371a4 --- /dev/null +++ b/Assets/AssetsEquipment/ScriptableObject/武器/副手.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d59370b1224756a48aae056eac6abc05 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AssetsPackage/物品数据/武器/盾牌.asset b/Assets/AssetsEquipment/ScriptableObject/武器/副手/盾牌.asset similarity index 100% rename from Assets/AssetsPackage/物品数据/武器/盾牌.asset rename to Assets/AssetsEquipment/ScriptableObject/武器/副手/盾牌.asset diff --git a/Assets/AssetsPackage/物品数据/武器/盾牌.asset.meta b/Assets/AssetsEquipment/ScriptableObject/武器/副手/盾牌.asset.meta similarity index 100% rename from Assets/AssetsPackage/物品数据/武器/盾牌.asset.meta rename to Assets/AssetsEquipment/ScriptableObject/武器/副手/盾牌.asset.meta diff --git a/Assets/AssetsEquipment/ScriptableObject/武器/单手.meta b/Assets/AssetsEquipment/ScriptableObject/武器/单手.meta new file mode 100644 index 0000000..62719a4 --- /dev/null +++ b/Assets/AssetsEquipment/ScriptableObject/武器/单手.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3196c223cc5a7014f8504b1056eb06b9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AssetsEquipment/ScriptableObject/武器/单手/单手剑 1.asset b/Assets/AssetsEquipment/ScriptableObject/武器/单手/单手剑 1.asset new file mode 100644 index 0000000..bf5fa19 --- /dev/null +++ b/Assets/AssetsEquipment/ScriptableObject/武器/单手/单手剑 1.asset @@ -0,0 +1,16 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !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: 45818eb64c9b04441b20b29f0230edb7, type: 3} + m_Name: "\u5355\u624B\u5251 1" + m_EditorClassIdentifier: + sprite: {fileID: 21300000, guid: 5fd50594014b70e48bd6993443d46b32, type: 3} + type: 0 diff --git a/Assets/AssetsEquipment/ScriptableObject/武器/单手/单手剑 1.asset.meta b/Assets/AssetsEquipment/ScriptableObject/武器/单手/单手剑 1.asset.meta new file mode 100644 index 0000000..eb6c5c2 --- /dev/null +++ b/Assets/AssetsEquipment/ScriptableObject/武器/单手/单手剑 1.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d1ab7394c601aff4797e854bd7be57f5 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AssetsEquipment/ScriptableObject/武器/单手/单手剑 2.asset b/Assets/AssetsEquipment/ScriptableObject/武器/单手/单手剑 2.asset new file mode 100644 index 0000000..d456b38 --- /dev/null +++ b/Assets/AssetsEquipment/ScriptableObject/武器/单手/单手剑 2.asset @@ -0,0 +1,16 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !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: 45818eb64c9b04441b20b29f0230edb7, type: 3} + m_Name: "\u5355\u624B\u5251 2" + m_EditorClassIdentifier: + sprite: {fileID: 21300000, guid: 5fd50594014b70e48bd6993443d46b32, type: 3} + type: 0 diff --git a/Assets/AssetsEquipment/ScriptableObject/武器/单手/单手剑 2.asset.meta b/Assets/AssetsEquipment/ScriptableObject/武器/单手/单手剑 2.asset.meta new file mode 100644 index 0000000..13f7f0c --- /dev/null +++ b/Assets/AssetsEquipment/ScriptableObject/武器/单手/单手剑 2.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2155d31e917f2eb45a9f62174a1698ea +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AssetsPackage/物品数据/武器/单手剑.asset b/Assets/AssetsEquipment/ScriptableObject/武器/单手/单手剑.asset similarity index 100% rename from Assets/AssetsPackage/物品数据/武器/单手剑.asset rename to Assets/AssetsEquipment/ScriptableObject/武器/单手/单手剑.asset diff --git a/Assets/AssetsPackage/物品数据/武器/单手剑.asset.meta b/Assets/AssetsEquipment/ScriptableObject/武器/单手/单手剑.asset.meta similarity index 100% rename from Assets/AssetsPackage/物品数据/武器/单手剑.asset.meta rename to Assets/AssetsEquipment/ScriptableObject/武器/单手/单手剑.asset.meta diff --git a/Assets/AssetsEquipment/ScriptableObject/武器/双手.meta b/Assets/AssetsEquipment/ScriptableObject/武器/双手.meta new file mode 100644 index 0000000..251858c --- /dev/null +++ b/Assets/AssetsEquipment/ScriptableObject/武器/双手.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 99034827463076243a095d6e0719166c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AssetsPackage/物品数据/武器/弓.asset b/Assets/AssetsEquipment/ScriptableObject/武器/双手/弓.asset similarity index 100% rename from Assets/AssetsPackage/物品数据/武器/弓.asset rename to Assets/AssetsEquipment/ScriptableObject/武器/双手/弓.asset diff --git a/Assets/AssetsPackage/物品数据/武器/弓.asset.meta b/Assets/AssetsEquipment/ScriptableObject/武器/双手/弓.asset.meta similarity index 100% rename from Assets/AssetsPackage/物品数据/武器/弓.asset.meta rename to Assets/AssetsEquipment/ScriptableObject/武器/双手/弓.asset.meta diff --git a/Assets/AssetsPackage/物品数据/饰品.meta b/Assets/AssetsEquipment/ScriptableObject/饰品.meta similarity index 100% rename from Assets/AssetsPackage/物品数据/饰品.meta rename to Assets/AssetsEquipment/ScriptableObject/饰品.meta diff --git a/Assets/AssetsEquipment/ScriptableObject/饰品/戒指.meta b/Assets/AssetsEquipment/ScriptableObject/饰品/戒指.meta new file mode 100644 index 0000000..02c79fc --- /dev/null +++ b/Assets/AssetsEquipment/ScriptableObject/饰品/戒指.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0f196c0732ec0114cb37de3ec74740d9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AssetsPackage/物品数据/饰品/戒指.asset b/Assets/AssetsEquipment/ScriptableObject/饰品/戒指/戒指.asset similarity index 100% rename from Assets/AssetsPackage/物品数据/饰品/戒指.asset rename to Assets/AssetsEquipment/ScriptableObject/饰品/戒指/戒指.asset diff --git a/Assets/AssetsPackage/物品数据/饰品/戒指.asset.meta b/Assets/AssetsEquipment/ScriptableObject/饰品/戒指/戒指.asset.meta similarity index 100% rename from Assets/AssetsPackage/物品数据/饰品/戒指.asset.meta rename to Assets/AssetsEquipment/ScriptableObject/饰品/戒指/戒指.asset.meta diff --git a/Assets/AssetsEquipment/ScriptableObject/饰品/手镯.meta b/Assets/AssetsEquipment/ScriptableObject/饰品/手镯.meta new file mode 100644 index 0000000..8e931f3 --- /dev/null +++ b/Assets/AssetsEquipment/ScriptableObject/饰品/手镯.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 76925090c35dc5c4ca26c94995c00e71 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AssetsEquipment/ScriptableObject/饰品/项链.meta b/Assets/AssetsEquipment/ScriptableObject/饰品/项链.meta new file mode 100644 index 0000000..ecba802 --- /dev/null +++ b/Assets/AssetsEquipment/ScriptableObject/饰品/项链.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7854296aa2daf7d45a34980e33061b75 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AssetsPackage/物品数据/饰品/项链.asset b/Assets/AssetsEquipment/ScriptableObject/饰品/项链/项链.asset similarity index 100% rename from Assets/AssetsPackage/物品数据/饰品/项链.asset rename to Assets/AssetsEquipment/ScriptableObject/饰品/项链/项链.asset diff --git a/Assets/AssetsPackage/物品数据/饰品/项链.asset.meta b/Assets/AssetsEquipment/ScriptableObject/饰品/项链/项链.asset.meta similarity index 100% rename from Assets/AssetsPackage/物品数据/饰品/项链.asset.meta rename to Assets/AssetsEquipment/ScriptableObject/饰品/项链/项链.asset.meta diff --git a/Assets/AssetsPackage/物品数据/属性容器.asset b/Assets/AssetsPackage/物品数据/属性容器.asset index c5ba3ae..5289e0a 100644 --- a/Assets/AssetsPackage/物品数据/属性容器.asset +++ b/Assets/AssetsPackage/物品数据/属性容器.asset @@ -15,7 +15,7 @@ MonoBehaviour: type: 0 defaultValue: 0 minValue: 0 - maxValue: 3.4028235e+38 + maxValue: 9999 container: {fileID: 11400000} --- !u!114 &-1377547097575584075 MonoBehaviour: @@ -32,7 +32,7 @@ MonoBehaviour: type: 0 defaultValue: 0 minValue: 0 - maxValue: 3.4028235e+38 + maxValue: 9999 container: {fileID: 11400000} --- !u!114 &11400000 MonoBehaviour: diff --git a/Assets/ModuleCore/ModuleAttribute/ModuleConst/Editor.meta b/Assets/ModuleCore/ModuleAttribute/Editor.meta similarity index 100% rename from Assets/ModuleCore/ModuleAttribute/ModuleConst/Editor.meta rename to Assets/ModuleCore/ModuleAttribute/Editor.meta diff --git a/Assets/ModuleCore/ModuleAttribute/Editor/AttributeContainerConstEditor.cs b/Assets/ModuleCore/ModuleAttribute/Editor/AttributeContainerConstEditor.cs new file mode 100644 index 0000000..d8052a1 --- /dev/null +++ b/Assets/ModuleCore/ModuleAttribute/Editor/AttributeContainerConstEditor.cs @@ -0,0 +1,56 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using UnityEngine.UIElements; + +namespace MuHuaEditor { + /// + /// 属性容器 - 自定义编辑器 + /// + [CustomEditor(typeof(AttributeContainerConst))] + public class AttributeContainerConstEditor : ModuleUIEditor { + + public VisualTreeAsset AttributeTemplate = default; + + private UIAttributeList attributeList; + + public VisualElement AttributeList => Q("AttributeList"); + + public override void Initial() { + attributeList = new UIAttributeList(AttributeList, AttributeTemplate); + attributeList.Initial(value.instances); + AddControl(attributeList); + } + + + // public override void OnInspectorGUI() { + // base.OnInspectorGUI(); + // if (GUILayout.Button("创建属性")) { GenerateAttribute(); } + // if (GUILayout.Button("删除属性")) { DeleteInstance(); } + // } + + /// 创建属性实例 + // private void GenerateAttribute() { + // AttributeInstanceConst 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;) { + // AttributeInstanceConst instance = container.instances[i]; + // container.instances.Remove(instance); + // Undo.DestroyObjectImmediate(instance); + // } + // EditorUtility.SetDirty(container); + // AssetDatabase.SaveAssets(); + // } + + } +} \ No newline at end of file diff --git a/Assets/ModuleCore/ModuleAttribute/Editor/AttributeContainerConstEditor.cs.meta b/Assets/ModuleCore/ModuleAttribute/Editor/AttributeContainerConstEditor.cs.meta new file mode 100644 index 0000000..7a98cb0 --- /dev/null +++ b/Assets/ModuleCore/ModuleAttribute/Editor/AttributeContainerConstEditor.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: d8ae6bbae674e19448216fd6b41cd012 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: + - VisualTreeAsset: {fileID: 9197481963319205126, guid: 95527f76fc8930d4ab47213114a5952b, type: 3} + - AttributeTemplate: {fileID: 9197481963319205126, guid: 1749a10e5ffdea045b442dfa323e4028, type: 3} + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModuleCore/ModuleAttribute/Editor/AttributeInstanceConstEditor.cs b/Assets/ModuleCore/ModuleAttribute/Editor/AttributeInstanceConstEditor.cs new file mode 100644 index 0000000..84248b2 --- /dev/null +++ b/Assets/ModuleCore/ModuleAttribute/Editor/AttributeInstanceConstEditor.cs @@ -0,0 +1,46 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; + +namespace MuHuaEditor { + /// + /// 属性实例 - 自定义编辑器 + /// + [CustomEditor(typeof(AttributeInstanceConst))] + public class AttributeInstanceConstEditor : Editor { + + private AttributeInstanceConst instance; + + private void Awake() => instance = target as AttributeInstanceConst; + + 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() { + AttributeContainerConst container = instance.container; + container.instances.Remove(instance); + EditorUtility.SetDirty(container); + Undo.DestroyObjectImmediate(instance); + AssetDatabase.SaveAssets(); + } + } +} \ No newline at end of file diff --git a/Assets/ModuleCore/ModuleAttribute/ModuleConst/Editor/ConstAttributeInstanceEditor.cs.meta b/Assets/ModuleCore/ModuleAttribute/Editor/AttributeInstanceConstEditor.cs.meta similarity index 100% rename from Assets/ModuleCore/ModuleAttribute/ModuleConst/Editor/ConstAttributeInstanceEditor.cs.meta rename to Assets/ModuleCore/ModuleAttribute/Editor/AttributeInstanceConstEditor.cs.meta diff --git a/Assets/ModuleCore/ModuleEquipment/ModuleUIPanel.meta b/Assets/ModuleCore/ModuleAttribute/Editor/ModuleUIPanel.meta similarity index 77% rename from Assets/ModuleCore/ModuleEquipment/ModuleUIPanel.meta rename to Assets/ModuleCore/ModuleAttribute/Editor/ModuleUIPanel.meta index a00ce3d..dca33fe 100644 --- a/Assets/ModuleCore/ModuleEquipment/ModuleUIPanel.meta +++ b/Assets/ModuleCore/ModuleAttribute/Editor/ModuleUIPanel.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: ce2626e82921eb14992661fc763dc7b5 +guid: dbe28b450df84584cb523a09c813e59b folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/ModuleCore/ModuleAttribute/Editor/ModuleUIPanel/UIAttributeList.cs b/Assets/ModuleCore/ModuleAttribute/Editor/ModuleUIPanel/UIAttributeList.cs new file mode 100644 index 0000000..39f27cb --- /dev/null +++ b/Assets/ModuleCore/ModuleAttribute/Editor/ModuleUIPanel/UIAttributeList.cs @@ -0,0 +1,126 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UIElements; +using MuHua; + +namespace MuHuaEditor { + /// + /// 属性 - UI列表 + /// + public class UIAttributeList : ModuleUIPanel, UIControl { + /// 拖拽预览 + public VisualElement preview; + /// 鼠标位置 + public Vector2 mousePosition; + /// 偏移位置 + public Vector2 offsetPosition; + /// 项目列表 + public ModuleUIItems items; + + public UIAttributeList(VisualElement element, VisualTreeAsset templateAsset) : base(element) { + items = new ModuleUIItems(element, templateAsset, + (data, element) => new UIItem(data, element, this)); + + element.RegisterCallback(FloatingFunc); + } + private void FloatingFunc(MouseMoveEvent evt) { + mousePosition = evt.mousePosition; + } + + public void Update() { + if (preview == null) { return; } + preview.transform.position = mousePosition - offsetPosition; + } + + public void Dispose() => items.Release(); + + /// 初始化 + public void Initial(List list) { + items.Create(list); + } + /// 设置值 + // public void Settings(T value) => callback?.Invoke(value); + + public void MouseDownEvent(VisualElement element) { + preview = element; + offsetPosition = mousePosition; + // Debug.Log($"{preview.worldBound.position} - {mousePosition}"); + // offsetPosition = preview.worldBound.position - mousePosition; + // Debug.Log($"{preview.worldBound.position} = {mousePosition} + {offsetPosition}"); + } + public void MouseUpEvent() { + if (preview == null) { return; } + preview.transform.position = Vector2.zero; + + int insertIndex = GetInsertIndex(element, preview); + int oldIndex = element.IndexOf(preview); + + // 修正插入索引 + // if (insertIndex > oldIndex) insertIndex--; + Debug.Log($"插入位置 {insertIndex} - 旧位置 {oldIndex}"); + // 重新排序UI和数据 + if (oldIndex != insertIndex) { MovePreviewElement(oldIndex, insertIndex); } + preview = null; + } + + /// + /// 获取插入索引 + /// + private int GetInsertIndex(VisualElement parent, VisualElement preview) { + Vector2 previewCenter = preview.worldBound.center; + int insertIndex = 0; + for (int i = 0; i < parent.childCount; i++) { + var child = parent[i]; + if (child == preview) continue; + if (previewCenter.y < child.worldBound.center.y) { + insertIndex = i; + break; + } + insertIndex = i + 1; + } + return insertIndex; + } + + /// + /// 移动预览元素到新位置 + /// + private void MovePreviewElement(int oldIndex, int newIndex) { + VisualElement temp = element[oldIndex]; + // element.RemoveAt(oldIndex); + element.Insert(newIndex, temp); + } + + /// UI项 + public class UIItem : ModuleUIItem { + public readonly UIAttributeList parent; + + public Label Range => Q