Files
Continentis/Assets/Scripts/MainGame/Card/Editor/CardDataEditor.cs
SoulliesOfficial 61a397dd4c MOD!
2025-10-23 00:49:44 -04:00

74 lines
3.1 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.
#if UNITY_EDITOR
using UnityEditor;
using UnityEngine;
using SLSFramework.UModAssistance;
using Continentis.MainGame.Character;
namespace Continentis.MainGame.Card
{
[CustomEditor(typeof(CardData))]
public class CardDataEditor : DataEditor
{
// 存储我们需要自定义绘制的属性的引用
private SerializedProperty classFullNameProp;
private SerializedProperty prefabsProp;
private SerializedProperty derivativeCardsProp;
private SerializedProperty derivativeCharactersProp;
protected override void OnEnable()
{
base.OnEnable();
// 在启用时根据我们修改后的字段名找到对应的SerializedProperty
classFullNameProp = serializedObject.FindProperty("classFullName");
prefabsProp = serializedObject.FindProperty("prefabRefs");
derivativeCardsProp = serializedObject.FindProperty("derivativeCardDataRefs");
derivativeCharactersProp = serializedObject.FindProperty("derivativeCharacterDataRefs");
}
public override void OnInspectorGUI()
{
serializedObject.Update();
// --- 绘制自定义的Type选择器 ---
// 我们把它从所有自动绘制的属性中分离出来,放在最前面或最后面,让布局更清晰
EditorGUILayout.Space(); // 增加一点间距
EditorGUILayout.LabelField("Logic", EditorStyles.boldLabel);
if (DrawTypeSelectorGUI(classFullNameProp, "Card Logic Class", typeof(CardLogicBase), "Continentis.Mods", "Cards"))
{
string classFullName = classFullNameProp.stringValue;
string displayName = "Card_" + classFullName + "_DisplayName";
SerializedProperty displayNameProp = serializedObject.FindProperty("displayName");
displayNameProp.stringValue = displayName;
string functionTextName = "Card_" + classFullName + "_FunctionText";
SerializedProperty functionTextProp = serializedObject.FindProperty("functionText");
functionTextProp.stringValue = functionTextName;
}
// --- 核心修复 2将 _cardLogicClassNameProp 也加入排除列表 ---
// 因为这也是我们手动绘制的
DrawPropertiesExcluding(serializedObject, new string[]
{
"m_Script",
classFullNameProp.name, // <-- 新增
prefabsProp.name,
derivativeCardsProp.name,
derivativeCharactersProp.name
});
// --- 绘制自定义的引用列表 ---
EditorGUILayout.Space();
EditorGUILayout.LabelField("References", EditorStyles.boldLabel);
DrawCharacterListGUI<GameObject>(prefabsProp);
DrawCharacterListGUI<CardData>(derivativeCardsProp);
DrawCharacterListGUI<CharacterData>(derivativeCharactersProp);
HandleObjectPicker();
serializedObject.ApplyModifiedProperties();
}
}
}
#endif