Files
lrss3 bcb13638c1 改正了错别字。
修复了布局计算流程,现在可以手动定义固定行列数量了。
2026-04-28 14:15:01 +08:00

81 lines
3.8 KiB
C#

using UnityEditor;
using UnityEditor.UI;
using UnityEngine;
using XericUI.OverrideLayout;
namespace XericUIEditor.OverrideLayout
{
[CustomEditor(typeof(XericScrollRect), true)]
[CanEditMultipleObjects]
internal class XericScrollRectEditor : ScrollRectEditor
{
SerializedProperty m_EnableAutoActiveByMaskVisible;
SerializedProperty m_layoutGroup;
SerializedProperty m_preloadMargin;
SerializedProperty m_discernibleDistance;
SerializedProperty m_AAMVUpdateRate;
SerializedProperty m_childrenPool;
SerializedProperty m_cellSize;
SerializedProperty m_spacing;
SerializedProperty m_padding;
SerializedProperty m_startCorner;
SerializedProperty m_startAxis;
SerializedProperty m_childAlignment;
SerializedProperty m_constraint;
SerializedProperty m_constraintCount;
protected override void OnEnable()
{
base.OnEnable();
m_EnableAutoActiveByMaskVisible = serializedObject.FindProperty("m_enableAdvancedFunc");
m_layoutGroup = serializedObject.FindProperty("layoutGroup");
m_preloadMargin = serializedObject.FindProperty("m_preloadMargin");
m_discernibleDistance = serializedObject.FindProperty("m_discernibleDistance");
m_AAMVUpdateRate = serializedObject.FindProperty("m_AAMVUpdateRate");
m_childrenPool = serializedObject.FindProperty("childrenPool");
m_cellSize = serializedObject.FindProperty("m_cellSize");
m_spacing = serializedObject.FindProperty("m_spacing");
m_padding = serializedObject.FindProperty("m_padding");
m_startCorner = serializedObject.FindProperty("m_startCorner");
m_startAxis = serializedObject.FindProperty("m_startAxis");
m_childAlignment = serializedObject.FindProperty("m_childAlignment");
m_constraint = serializedObject.FindProperty("m_constraint");
m_constraintCount = serializedObject.FindProperty("m_constraintCount");
}
public override void OnInspectorGUI()
{
base.OnInspectorGUI();
serializedObject.Update();
EditorGUILayout.PropertyField(m_EnableAutoActiveByMaskVisible);
if (m_EnableAutoActiveByMaskVisible.boolValue)
{
EditorGUI.indentLevel++;
EditorGUILayout.PropertyField(m_layoutGroup, EditorGUIUtility.TrTextContent("Layout Group"));
EditorGUILayout.PropertyField(m_preloadMargin, EditorGUIUtility.TrTextContent("Preload Margin"));
EditorGUILayout.PropertyField(m_discernibleDistance, EditorGUIUtility.TrTextContent("Discernible Distance"));
EditorGUILayout.PropertyField(m_AAMVUpdateRate, EditorGUIUtility.TrTextContent("Update Rate"));
EditorGUILayout.PropertyField(m_childrenPool, EditorGUIUtility.TrTextContent("Item Pool"));
EditorGUI.indentLevel--;
EditorGUILayout.LabelField(new GUIContent("GridLayout"));
EditorGUI.indentLevel++;
EditorGUILayout.PropertyField(m_cellSize);
EditorGUILayout.PropertyField(m_spacing);
EditorGUILayout.PropertyField(m_padding);
EditorGUILayout.PropertyField(m_startCorner);
EditorGUILayout.PropertyField(m_startAxis);
EditorGUILayout.PropertyField(m_childAlignment);
EditorGUILayout.PropertyField(m_constraint);
if (m_constraint.enumValueIndex != (int)UnityEngine.UI.GridLayoutGroup.Constraint.Flexible)
EditorGUILayout.PropertyField(m_constraintCount);
EditorGUI.indentLevel--;
}
serializedObject.ApplyModifiedProperties();
}
}
}