Files
Cielonos/Assets/Scripts/MainGame/Characters/Data/AttributeData.cs
SoulliesOfficial 33b1795c1f 更新
2026-01-03 18:19:39 -05:00

58 lines
2.2 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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<string, float> originalAttributes;
[Tooltip("初始化时赋予给CurrentAttributes的属性第一栏是属性名第二栏是初始化时使用对应名称的originalAttributes的数据留空则默认为0,如果是float数字则直接使用该数字")]
public Dictionary<string, string> runtimeAttributes;
}
#if UNITY_EDITOR
public partial class AttributeData
{
/// <summary>
/// 从项目中得到AttributeCollection组件并将其数据复制到此ScriptableObject中。
/// </summary>
[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<AttributeCollection>(collectionPath);
foreach (KeyValuePair<string, float> pair in collection.originalAttributes)
{
if (!originalAttributes.ContainsKey(pair.Key))
{
originalAttributes.Add(pair.Key, pair.Value);
}
}
foreach (KeyValuePair<string, string> pair in collection.runtimeAttributes)
{
if (!runtimeAttributes.ContainsKey(pair.Key))
{
runtimeAttributes.Add(pair.Key, pair.Value);
}
}
}
}
#endif
}