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"); } } }