【第一章编辑器开发基础第一节绘制编辑器元素_7折叠面板控件(7/7)】
折叠面板控件
用途:组织/隐藏复杂UI区块
所属类:EditorGUILayout
调用位置:OnInspectorGUI()
标准实现:
foldout = EditorGUILayout.Foldout(foldout, "面板标题", true);if(foldout) {// 展开状态下的内容GUILayout.Button("子控件");
}
使用技巧:
第三个参数控制是否有展开动画
面板内可嵌套任意UI元素
状态管理需开发者自行维护
特别适合组织同类配置项
记忆口诀:
“折叠面板三件套:状态变量、Foldout调用、if包裹内容”
示例代码和效果图
using UnityEngine;
using UnityEditor;/// <summary>
/// 创建自定义编辑器,作用于Example组件
/// </summary>
[CustomEditor(typeof(Example))]
public class ExampleEditor : Editor
{private bool foldout1; // 折叠面板1的状态private bool foldout2; // 折叠面板2的状态// ================= 核心方法 - 绘制编辑器界面 =================public override void OnInspectorGUI(){// 1. 先绘制默认Inspector内容base.OnInspectorGUI();// 2. 依次绘制各种自定义控件Foldout(); // 折叠面板}// ================= 7. 折叠面板控件 =================private void Foldout(){// 折叠面板1(带展开/收起动画)foldout1 = EditorGUILayout.Foldout(foldout1, "Foldout1", true);if (foldout1) // 展开状态时显示内容{GUILayout.Label("Hello world", EditorStyles.miniBoldLabel);GUILayout.Label("Hello world", EditorStyles.boldLabel);GUILayout.Label("Hello world", EditorStyles.largeLabel);}// 折叠面板2foldout2 = EditorGUILayout.Foldout(foldout2, "Foldout2", true);if (foldout2) // 展开状态时显示内容{GUILayout.Button("btn1");GUILayout.Button("btn2");GUILayout.Button("btn3");}}}