using System.Collections.Generic; using Sirenix.OdinInspector; using UnityEngine; #if UNITY_EDITOR using UnityEditor; #endif namespace Cielonos.MainGame.Characters { [CreateAssetMenu(fileName = "AttributesData", menuName = "Cielonos/Characters/AttributesData", order = 1)] public partial class AttributeData : SerializedScriptableObject { [Title("Attributes")] [Tooltip("角色的通常属性:第一栏是属性名,第二栏是属性值")] public Dictionary originalAttributes; [Tooltip("初始化时赋予给CurrentAttributes的属性:第一栏是属性名,第二栏是初始化时使用对应名称的originalAttributes的数据,留空则默认为0,如果是float数字则直接使用该数字")] public Dictionary runtimeAttributes; } #if UNITY_EDITOR public partial class AttributeData { /// /// 从项目中得到AttributeCollection组件,并将其数据复制到此ScriptableObject中。 /// [Button("Paste Attributes From Collection")] public void PasteAttributesFromCollection() { string[] collectionID = AssetDatabase.FindAssets("t:AttributeCollection"); if (collectionID.Length == 0) { Debug.LogWarning("No AttributeCollection found in the project."); return; } string collectionPath = AssetDatabase.GUIDToAssetPath(collectionID[0]); AttributeCollection collection = AssetDatabase.LoadAssetAtPath(collectionPath); foreach (KeyValuePair pair in collection.originalAttributes) { if (!originalAttributes.ContainsKey(pair.Key)) { originalAttributes.Add(pair.Key, pair.Value); } } foreach (KeyValuePair pair in collection.runtimeAttributes) { if (!runtimeAttributes.ContainsKey(pair.Key)) { runtimeAttributes.Add(pair.Key, pair.Value); } } } } #endif }