AlicizaX/Client/Packages/com.alicizax.unity.resource/Editor/Inspector/ResourceComponentInspector.cs
2025-01-24 16:21:00 +08:00

99 lines
3.8 KiB
C#

using AlicizaX.Editor;
using AlicizaX.Resource.Runtime;
using UnityEditor;
using UnityEngine;
namespace AlicizaX.Resource.Editor
{
[CustomEditor(typeof(ResourceComponent))]
internal sealed class ResourceComponentInspector : ComponentTypeComponentInspector
{
private SerializedProperty m_GamePlayMode;
private GUIContent m_GamePlayModeGUIContent = new GUIContent("资源运行模式");
private SerializedProperty m_Milliseconds;
private SerializedProperty m_defaultPackageName;
private SerializedProperty m_AssetAutoReleaseInterval;
private SerializedProperty m_AssetCapacity;
private SerializedProperty m_AssetExpireTime;
private SerializedProperty m_AssetPriority;
public override void OnInspectorGUI()
{
base.OnInspectorGUI();
serializedObject.Update();
EditorGUI.BeginDisabledGroup(EditorApplication.isPlayingOrWillChangePlaymode);
{
EditorGUILayout.PropertyField(m_GamePlayMode, m_GamePlayModeGUIContent);
long milliseconds = (long)EditorGUILayout.Slider("每帧执行消耗的最大时间切片(ms)", m_Milliseconds.longValue, 30, 100000);
if (milliseconds != m_Milliseconds.longValue)
{
m_Milliseconds.longValue = milliseconds;
}
string packageName = EditorGUILayout.TextField("Package Name", m_defaultPackageName.stringValue);
if (packageName != m_defaultPackageName.stringValue)
{
m_defaultPackageName.stringValue = packageName;
}
float assetAutoReleaseInterval = EditorGUILayout.Slider("对象池自动释放间隔(s)", m_AssetAutoReleaseInterval.floatValue, 60, 3600);
if (assetAutoReleaseInterval != m_AssetAutoReleaseInterval.floatValue)
{
m_AssetAutoReleaseInterval.floatValue = assetAutoReleaseInterval;
}
int assetCapacity = EditorGUILayout.IntSlider("对象池容量", m_AssetCapacity.intValue, 32, 1024);
if (assetCapacity != m_AssetCapacity.intValue)
{
m_AssetCapacity.intValue = assetCapacity;
}
float assetExpireTime = EditorGUILayout.Slider("对象池过期秒数", m_AssetExpireTime.floatValue, 60, 1024);
if (assetExpireTime != m_AssetExpireTime.floatValue)
{
m_AssetExpireTime.floatValue = assetExpireTime;
}
int assetPriority = EditorGUILayout.IntSlider("对象池优先级", m_AssetPriority.intValue, 0, 10);
if (assetPriority != m_AssetPriority.intValue)
{
m_AssetPriority.intValue = assetPriority;
}
}
EditorGUI.EndDisabledGroup();
serializedObject.ApplyModifiedProperties();
Repaint();
}
protected override void RefreshTypeNames()
{
RefreshComponentTypeNames(typeof(IResourceManager));
}
protected override void Enable()
{
m_GamePlayMode = serializedObject.FindProperty("m_GamePlayMode");
m_Milliseconds = serializedObject.FindProperty("m_Milliseconds");
m_defaultPackageName = serializedObject.FindProperty("m_defaultPackageName");
m_AssetAutoReleaseInterval = serializedObject.FindProperty("m_AssetAutoReleaseInterval");
m_AssetCapacity = serializedObject.FindProperty("m_AssetCapacity");
m_AssetExpireTime = serializedObject.FindProperty("m_AssetExpireTime");
m_AssetPriority = serializedObject.FindProperty("m_AssetPriority");
}
}
}