Files
XericUIActionVessel/Runtime/InterfaceAttributeReflectionGenerator/Scripts/XuiavrPropertyScriptableObject.cs
2026-06-24 14:13:20 +08:00

107 lines
3.4 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
#if ODIN_INSPECTOR
using Sirenix.OdinInspector;
#endif
using UnityEngine;
using XericLibrary.Runtime.MacroLibrary;
using Object = UnityEngine.Object;
namespace XericUI.ReflectionUIGenerator
{
/// <summary>
/// [已弃用] 属性映射器。请使用 XuiavrgPropertyGroupScriptableObject 替代。
/// 功能已整合到 PropertyGroup 中,此类保留仅用于向后兼容。
/// </summary>
[Serializable]
[Obsolete("Use XuiavrgPropertyGroupScriptableObject instead. Property mapping is now integrated directly into the group.")]
public class XuiavrPropertyScriptableObject : ScriptableObject
{
#if ODIN_INSPECTOR
[LabelText("属性类型")]
[ValueDropdown("AssemblyValueTypeNames")]
#endif
public string valueType;
#if ODIN_INSPECTOR
[LabelText("属性名称")]
#endif
public string propertyName;
#if ODIN_INSPECTOR
[LabelText("界面预制体")]
#endif
public GameObject prefab;
/// <summary>
/// 属性类型
/// </summary>
public System.Type ValueType
{
get
{
if (_valueType != null)
return _valueType;
return _valueType = Type.GetType(valueType);
}
}
private System.Type _valueType;
#if ODIN_INSPECTOR // 属性类型名称枚举
private IEnumerable AssemblyValueTypeNames
{
get
{
if (_assemblyValueTypeName != null)
return _assemblyValueTypeName;
_assemblyValueTypeName = new ValueDropdownList<string>();
// foreach (var typeName in MacroReflection.GetAllAssignableTypeInAppDomainAssembly(
// typeof(float),
// typeof(string),
// typeof(bool),
// typeof(Enum),
// typeof(int)
// ).Select(a => a.FullName))
// {
// _assemblyValueTypeName.Add(typeName);
// }
_assemblyValueTypeName.AddRange(AllValueType.Select(a => new ValueDropdownItem<string>(a.Name, a.FullName)));
return _assemblyValueTypeName;
}
}
private static ValueDropdownList<string> _assemblyValueTypeName = null;
#endif
/// <summary>
/// 直接定义所有需要检查的类型
/// </summary>
public static IEnumerable<Type> AllValueType
{
get
{
yield return typeof(Enum);
yield return typeof(decimal);
yield return typeof(double);
yield return typeof(float);
yield return typeof(ulong);
yield return typeof(long);
yield return typeof(int);
yield return typeof(uint);
yield return typeof(short);
yield return typeof(ushort);
yield return typeof(byte);
yield return typeof(sbyte);
yield return typeof(string);
yield return typeof(char);
yield return typeof(bool);
}
}
}
}