版本: Unity 6 (6000.0)
语言English
  • C#

EditorGUI.BeginFoldoutHeaderGroup

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实会阅读用户提出的每个建议更改,并在适用的情况下进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

public static bool BeginFoldoutHeaderGroup(Rect position, bool foldout, string content, GUIStyle style = EditorStyles.foldoutHeader, Action<Rect> menuAction, GUIStyle menuIcon);

声明

public static bool BeginFoldoutHeaderGroup(Rect position, bool foldout, GUIContent content, GUIStyle style = EditorStyles.foldoutHeader, Action<Rect> menuAction, GUIStyle menuIcon);

参数

foldout 显示的展开状态。
content 要显示的标签。
style 可选的 GUIStyle
menuAction 单击图标时发生的事件。
menuIcon 图标的可选 GUIStyle
position 屏幕上用于控件的矩形。

返回值

bool 用户选择的展开状态。如果为 true,则应渲染子对象。

描述

创建一个左侧带有展开箭头的标签。

这对于文件夹状结构很有用,其中子对象仅在展开父文件夹时才会显示。此控件不能嵌套在另一个 BeginFoldoutHeaderGroup 中。要使用多个此类展开,必须使用 EndFoldoutHeaderGroup 结束每个方法。


创建一个可折叠的标题菜单,该菜单隐藏或显示选定的 Transform。

// Create a foldable header menu that hides or shows the selected Transform position.
// If you have not selected a Transform, the Foldout item stays folded until
// you select a Transform.

using UnityEditor; using UnityEngine;

public class FoldoutHeaderUsage : EditorWindow { bool showPosition = true; string status = "Select a GameObject";

[MenuItem("Examples/Foldout Header Usage")] static void CreateWindow() { GetWindow<FoldoutHeaderUsage>(); }

public void OnGUI() { // An absolute-positioned example: We make foldout header group and put it in a small rect on the screen. showPosition = EditorGUI.BeginFoldoutHeaderGroup(new Rect(10, 10, 200, 100), showPosition, status);

if (showPosition) if (Selection.activeTransform) { Selection.activeTransform.position = EditorGUI.Vector3Field(new Rect(10, 30, 200, 100), "Position", Selection.activeTransform.position); status = Selection.activeTransform.name; }

if (!Selection.activeTransform) { status = "Select a GameObject"; showPosition = false; } // End the Foldout Header that we began above. EditorGUI.EndFoldoutHeaderGroup(); } }


创建一个菜单项操作,当您单击它时,将选定的对象移动到 0,0,0。

// Create a foldable header menu that hides or shows the selected Transform position.
// If you have not selected a Transform, the Foldout item stays folded until
// you select a Transform.

using UnityEditor; using UnityEngine;

public class FoldoutHeaderUsage : EditorWindow { bool showPosition = true; string status = "Select a GameObject";

[MenuItem("Examples/Foldout Header Usage")] static void CreateWindow() { GetWindow<FoldoutHeaderUsage>(); }

public void OnGUI() { // An absolute-positioned example: We make foldout header group and put it in a small rect on the screen. showPosition = EditorGUI.BeginFoldoutHeaderGroup(new Rect(10, 10, 200, 100), showPosition, status, null, ShowHeaderContextMenu);

if (showPosition) if (Selection.activeTransform) { Selection.activeTransform.position = EditorGUI.Vector3Field(new Rect(10, 30, 200, 100), "Position", Selection.activeTransform.position); status = Selection.activeTransform.name; }

if (!Selection.activeTransform) { status = "Select a GameObject"; showPosition = false; } // End the Foldout Header that we began above. EditorGUI.EndFoldoutHeaderGroup(); }

void ShowHeaderContextMenu(Rect position) { var menu = new GenericMenu(); menu.AddItem(new GUIContent("Move to (0,0,0)"), false, OnItemClicked); menu.DropDown(position); }

void OnItemClicked() { Undo.RecordObject(Selection.activeTransform, "Moving to center of world"); Selection.activeTransform.position = Vector3.zero; } }