using UnityEngine;
|
using UnityEditor;
|
|
[CustomEditor(typeof(UIBase))]
|
public class UIBaseInspector : Editor
|
{
|
SerializedProperty uiLayer;
|
SerializedProperty uiName;
|
SerializedProperty isMainUI;
|
SerializedProperty supportParentChildRelation;
|
SerializedProperty isPersistent;
|
SerializedProperty maxIdleRounds;
|
SerializedProperty openAnimationType;
|
SerializedProperty closeAnimationType;
|
SerializedProperty animationDuration;
|
SerializedProperty animationEase;
|
SerializedProperty openMask;
|
SerializedProperty clickEmptySpaceClose;
|
|
void OnEnable()
|
{
|
// 获取所有SerializedProperty
|
uiLayer = serializedObject.FindProperty("uiLayer");
|
uiName = serializedObject.FindProperty("uiName");
|
isMainUI = serializedObject.FindProperty("isMainUI");
|
supportParentChildRelation = serializedObject.FindProperty("supportParentChildRelation");
|
isPersistent = serializedObject.FindProperty("isPersistent");
|
maxIdleRounds = serializedObject.FindProperty("maxIdleRounds");
|
openAnimationType = serializedObject.FindProperty("openAnimationType");
|
closeAnimationType = serializedObject.FindProperty("closeAnimationType");
|
animationDuration = serializedObject.FindProperty("animationDuration");
|
animationEase = serializedObject.FindProperty("animationEase");
|
openMask = serializedObject.FindProperty("openMask");
|
clickEmptySpaceClose = serializedObject.FindProperty("clickEmptySpaceClose");
|
}
|
|
public override void OnInspectorGUI()
|
{
|
serializedObject.Update();
|
|
EditorGUILayout.PropertyField(uiLayer);
|
EditorGUILayout.PropertyField(uiName);
|
EditorGUILayout.PropertyField(isMainUI);
|
EditorGUILayout.PropertyField(supportParentChildRelation);
|
|
EditorGUILayout.Space();
|
EditorGUILayout.LabelField("持久化设置", EditorStyles.boldLabel);
|
EditorGUILayout.PropertyField(isPersistent);
|
if (isPersistent.boolValue)
|
{
|
EditorGUI.indentLevel++;
|
EditorGUILayout.PropertyField(maxIdleRounds);
|
EditorGUI.indentLevel--;
|
}
|
|
EditorGUILayout.Space();
|
EditorGUILayout.LabelField("动画设置", EditorStyles.boldLabel);
|
EditorGUILayout.PropertyField(openAnimationType);
|
EditorGUILayout.PropertyField(closeAnimationType);
|
if (openAnimationType.enumValueIndex != 0 || closeAnimationType.enumValueIndex != 0)
|
{
|
EditorGUI.indentLevel++;
|
EditorGUILayout.PropertyField(animationDuration);
|
EditorGUILayout.PropertyField(animationEase);
|
EditorGUI.indentLevel--;
|
}
|
|
EditorGUILayout.Space();
|
EditorGUILayout.LabelField("遮罩设置", EditorStyles.boldLabel);
|
|
// 使用BeginHorizontal来创建一个水平布局组
|
EditorGUILayout.BeginHorizontal();
|
|
// 创建一个开关按钮组
|
EditorGUI.BeginChangeCheck();
|
bool tempOpenMask = GUILayout.Toggle(openMask.boolValue, "开启遮罩", EditorStyles.miniButtonLeft);
|
bool tempClickEmptyClose = GUILayout.Toggle(clickEmptySpaceClose.boolValue, "点击空白关闭", EditorStyles.miniButtonRight);
|
|
// 如果有改变
|
if (EditorGUI.EndChangeCheck())
|
{
|
// 确保只有一个可以为true
|
if (tempOpenMask && tempClickEmptyClose)
|
{
|
// 如果两个都为true,保持最后改变的那个为true
|
if (openMask.boolValue != tempOpenMask)
|
{
|
clickEmptySpaceClose.boolValue = false;
|
openMask.boolValue = true;
|
}
|
else
|
{
|
openMask.boolValue = false;
|
clickEmptySpaceClose.boolValue = true;
|
}
|
}
|
else
|
{
|
openMask.boolValue = tempOpenMask;
|
clickEmptySpaceClose.boolValue = tempClickEmptyClose;
|
}
|
}
|
|
EditorGUILayout.EndHorizontal();
|
|
serializedObject.ApplyModifiedProperties();
|
}
|
}
|