继续
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
#if UNITY_EDITOR
|
||||
using System;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
using Continentis.MainGame.Card;
|
||||
@@ -12,7 +13,6 @@ namespace Continentis.MainGame.Equipment
|
||||
{
|
||||
// Fundamental
|
||||
private SerializedProperty _haveCustomClassProp;
|
||||
private SerializedProperty _classFullNameProp;
|
||||
private SerializedProperty _modNameProp;
|
||||
private SerializedProperty _classNameProp;
|
||||
private SerializedProperty _displayNameProp;
|
||||
@@ -40,7 +40,6 @@ namespace Continentis.MainGame.Equipment
|
||||
base.OnEnable();
|
||||
// --- 在OnEnable中找到所有属性 ---
|
||||
_haveCustomClassProp = serializedObject.FindProperty("haveCustomClass");
|
||||
_classFullNameProp = serializedObject.FindProperty("classFullName");
|
||||
_modNameProp = serializedObject.FindProperty("modName");
|
||||
_classNameProp = serializedObject.FindProperty("className");
|
||||
_displayNameProp = serializedObject.FindProperty("displayName");
|
||||
@@ -75,14 +74,26 @@ namespace Continentis.MainGame.Equipment
|
||||
if (_haveCustomClassProp.boolValue)
|
||||
{
|
||||
// 如果勾选,则显示class选择器 (假设基类为EquipmentBase, 命名空间为.Equipments)
|
||||
DrawTypeSelectorGUI(_classFullNameProp, "Equipment Class", typeof(EquipmentBase), "Continentis.Mods", ".Equipments");
|
||||
if (DrawTypeSelectorGUI(_classNameProp, "Equipment Class", typeof(EquipmentBase), out Type outType, "Continentis.Mods", ".Equipments"))
|
||||
{
|
||||
string className = _classNameProp.stringValue;
|
||||
string modName = outType.Namespace!.Replace("Continentis.Mods.", "").Split('.')[0];
|
||||
string displayName = "Card_" + modName + "_" + className + "_DisplayName";
|
||||
|
||||
_modNameProp.stringValue = modName;
|
||||
_displayNameProp.stringValue = displayName;
|
||||
}
|
||||
|
||||
EditorGUI.BeginDisabledGroup(true);
|
||||
}
|
||||
else
|
||||
|
||||
EditorGUILayout.PropertyField(_modNameProp);
|
||||
EditorGUILayout.PropertyField(_classNameProp);
|
||||
EditorGUILayout.PropertyField(_displayNameProp);
|
||||
|
||||
if (_haveCustomClassProp.boolValue)
|
||||
{
|
||||
// 如果不勾选,则显示手动输入字段
|
||||
EditorGUILayout.PropertyField(_modNameProp);
|
||||
EditorGUILayout.PropertyField(_classNameProp);
|
||||
EditorGUILayout.PropertyField(_displayNameProp);
|
||||
EditorGUI.EndDisabledGroup();
|
||||
}
|
||||
|
||||
EditorGUILayout.PropertyField(_tagsProp, true);
|
||||
|
||||
@@ -69,12 +69,13 @@ namespace Continentis.MainGame.Equipment
|
||||
{
|
||||
public static EquipmentBase GenerateEquipment(EquipmentData data, CharacterBase character = null)
|
||||
{
|
||||
Type logicType = data.haveCustomClass ? ModManager.GetType(data.classFullName) : typeof(EquipmentBase);
|
||||
string typeID = "NoFunctionEquipment";
|
||||
Type logicType = typeof(EquipmentBase);
|
||||
|
||||
if(logicType == null)
|
||||
if (data.haveCustomClass)
|
||||
{
|
||||
Debug.LogError($"Card class '{data.classFullName}' not found in assemblies.");
|
||||
return null;
|
||||
typeID = ModManager.GetTypeID(data.modName, "Equipments", data.className);
|
||||
logicType = ModManager.GetType(typeID);
|
||||
}
|
||||
|
||||
if (Activator.CreateInstance(logicType) is EquipmentBase equipment)
|
||||
@@ -85,7 +86,7 @@ namespace Continentis.MainGame.Equipment
|
||||
return equipment;
|
||||
}
|
||||
|
||||
Debug.LogError($"Failed to create equipment of type {data.classFullName}");
|
||||
Debug.LogError($"Failed to create equipment of type {typeID}");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,7 +15,6 @@ namespace Continentis.MainGame.Equipment
|
||||
{
|
||||
[Header("Fundamental")]
|
||||
public bool haveCustomClass;
|
||||
public string classFullName;
|
||||
public string modName;
|
||||
public string className;
|
||||
public string displayName;
|
||||
@@ -43,12 +42,6 @@ namespace Continentis.MainGame.Equipment
|
||||
//[Header("Upgrades")]
|
||||
//public List<EquipmentData> upgrades;
|
||||
}
|
||||
|
||||
public partial class EquipmentData
|
||||
{
|
||||
public string ModName => haveCustomClass ? classFullName.Split('_').First() : modName;
|
||||
public string ClassName => haveCustomClass ? classFullName.Split('_').Last() : className;
|
||||
}
|
||||
|
||||
public partial class EquipmentData
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user