GUILayout类和EditorGUILayout类
目录
- GUILayout类和EditorGUILayout类
一、GUILayout 类
官方中文文档
1.布局
BeginArea 固定区域
BeginHorizontal 和 BeginVertical 水平和垂直布局
BeginScrollView 自动布局的滚动视图
2.Box 创建一个自动布局框
3.按钮类型
Button 和 RepeatButton 按钮
SelectionGrid 选择网格
Toolbar 工具栏
Toggle 开关
4.滚动条和滑动条
HorizontalScrollbar 和 VerticalScrollbar 滚动条
HorizontalSlider 和 VerticalSlider 滑动条
5.输入框
TextField/TextArea 单行/多行输入框
PasswordField 密码输入框
6.Window 弹出窗口
7.展示
Label 展示标签
FlexibleSpace 灵活的空白元素
Space 当前布局中插入空白元素
二、EditorGUILayout 类
官方中文文档
1.布局
BeginHorizontal 和 BeginVertical 水平和垂直布局
BeginScrollView 自动布局滚动视图
BeginToggleGroup 开关组
BeginFadeGroup 显示隐藏组
2.滑动条
Slider 和 IntSlider 滑动条
MinMaxSlider 范围滑动条
3.按钮、开关、下拉框和选择器
Toggle 和 ToggleLeft 开关
Popup、IntPopup 和 EnumPopup 弹出选择框
Popup:
IntPopup:
// num=0 展示出来的是 c
num = EditorGUILayout.IntPopup(num,new string[] { "a","b","c","d"},new int[] { 1,5,0,0});
EnumPopup:
enum OPTIONS{A,B,C}
OPTIONS op = OPTIONS.A;
private void OnGUI()
{
op = (OPTIONS)EditorGUILayout.EnumPopup(op);
}
TagField 和 LayerField 弹出选择框
DropdownButton 对鼠标按下做出反应的按钮
EnumFlagsField 枚举掩码选择框
enum OPTIONS
{
None=0,
A=1<<0,//1-1
B=1<<1,//2-10
C=1<<3,//8-1000
AB=A|B,//3-11
ABC=A|B|C,//11-1011
}
OPTIONS op = (OPTIONS)10;
private void OnGUI()
{
op = (OPTIONS)EditorGUILayout.EnumFlagsField(op);
}
MaskField 掩码的选择框
ColorField 颜色选择器
GradientField Gradient 选择器
CurveField AnimationCurve 动画编辑
Foldout 可折叠的标签
bool foldout = false;
private void OnGUI()
{
GUILayout.BeginVertical();
foldout = EditorGUILayout.Foldout(foldout, "折叠");
if (foldout)
{
if (GUILayout.Button("曲线生成C#代码")){}
}
GUILayout.EndVertical();
}
InspectorTitlebar 窗口标题栏
4.输入框
Bounds 输入框
方法参数对应类型:
BoundsField | BoundsIntField |
---|---|
Bounds | BoundsInt |
Rect 输入框
方法参数对应类型:
RectField | RectIntField |
---|---|
Rect | Rect |
Vector 输入框
方法参数对应类型:
Vector2Field | Vector2IntField | Vector3Field | Vector3IntField | Vector4Field |
---|---|---|---|---|
Vector2 | Vector2Int | Vector3 | Vector3Int | Vector4 |
数字、文本输入框
方法参数对应类型:
DoubleField | FloatField | IntField | LongField | TextField/TextArea |
---|---|---|---|---|
double | float | int | long | string |
Delay 延迟输入框
方法参数对应类型:
DelayedDoubleField | DelayedFloatField | DelayedIntField | DelayedTextField |
---|---|---|---|
double | float | int | string |
PasswordField 密码输入框
ObjectField 输入框
5.展示
GetControlRect 获取编辑器控件的矩形
HelpBox 提示框
LabelField 标签展示
SelectableLabel 可选择标签
PrefixLabel 特定控件前的标签
PropertyField SerializedProperty 生成一个字段
Space 控件之间的空间
三、GUIContent 和 GUIStyle、GUILayoutOption
1.GUILayoutOption
2.GUIContent 类
3.GUIStyle
四、Utility 辅助类
EditorGUIUtility EditorUtility
ClearDirty | 清除 target 的“脏”标志。 |
---|---|
ClearProgressBar | Removes the progress bar. |
CollectDeepHierarchy | 收集层级视图中以每个指定对象为根对象的所有对象。 |
CollectDependencies | 计算并返回 roots 中列出的资源所依赖的所有资源的列表。 |
CompressCubemapTexture | 压缩立方体贴图纹理。 |
CompressTexture | 压缩纹理。 |
CopySerialized | 复制 Unity Object 的所有设置。 |
CopySerializedIfDifferent | 将 Unity Object 的所有设置复制到第二个 Object(如果两者不同)。 |
CopySerializedManagedFieldsOnly | 在不同的托管对象之间复制可序列化的字段。 |
CreateGameObjectWithHideFlags | 使用 HideFlags 和指定组件创建游戏对象。 |
DisplayCancelableProgressBar | 显示或更新含有 Cancel 按钮的进度条。 |
DisplayDialog | 此方法显示模态对话框。 |
DisplayDialogComplex | 显示含有三个按钮的模态对话框。 |
DisplayPopupMenu | 显示弹出菜单。 |
DisplayProgressBar | 显示或更新进度条。 |
FocusProjectWindow | 将 Project 窗口置于前面并聚焦该窗口。 |
FormatBytes | 返回有关字节数的文本。 |
GetDialogOptOutDecision | 此方法显示模态对话框,使用户可以选择不再次显示当前对话框。 |
GetDirtyCount | 返回一个整数,指示更改指定对象的序列化属性的次数。 |
GetObjectEnabled | 对象是否已启用(0 表示已禁用,1 表示已启用,-1 表示没有 Enabled 按钮)。 |
InstanceIDToObject | 将实例 ID 转换为对对象的引用。 |
IsDirty | 获取一个布尔值,指示指定对象自上次保存以来是否已更改。 |
IsPersistent | 确定对象是否存储在磁盘中。 |
IsRunningUnderCPUEmulation | Gets a boolean value. This value indicates whether your CPU is unable to execute Unity natively and is running an emulated version. |
NaturalCompare | 仿人类排序。 |
OpenFilePanel | 显示“打开文件”对话框并返回所选的路径名称。 |
OpenFilePanelWithFilters | 显示“打开文件”对话框并返回所选的路径名称。 |
OpenFolderPanel | 显示“打开文件夹”对话框并返回所选的路径名称。 |
OpenPropertyEditor | Open properties editor for an Object. |
RequestScriptReload | Unity 编辑器会在下一帧上异步重新加载脚本程序集。这会重置所有脚本的状态,但是 Unity 不会编译任何自上次编译以来已更改的代码。 |
SaveFilePanel | 显示“保存文件”对话框并返回所选的路径名称。 |
SaveFilePanelInProject | 在项目的 Assets 文件夹中显示“保存文件”对话框并返回所选的路径名称。 |
SaveFolderPanel | 显示“保存文件夹”对话框并返回所选的路径名称。 |
SetCameraAnimateMaterials | 设置此摄像机以启用编辑器中的材质动画。 |
SetCameraAnimateMaterialsTime | 为此摄像机设置渲染时使用的全局时间。 |
SetCustomDiffTool | Set custom diff tool settings. |
SetDefaultParentObject | Sets the default parent object for the active Scene. |
SetDialogOptOutDecision | 此方法显示模态对话框,使用户可以选择不再次显示当前对话框。 |
SetDirty | Marks target object as dirty. |
SetObjectEnabled | 设置对象的启用状态。 |
SetSelectedRenderState | 为此渲染器将场景视图设置为所选的显示模式。 |
UnloadUnusedAssetsImmediate | 卸载未使用的资源。 |
UpdateGlobalShaderProperties | 更新渲染时使用的全局着色器属性。 |
五、扩展
1.动画曲线生成 C# 代码
// 动画曲线生成 C# 代码,生成代码直接复制使用
AnimationCurve curve = new AnimationCurve(new Keyframe(0f, 0f, 0f, 0f), new Keyframe(1f, 1f, 0f, 0f));
private void OnGUI()
{
GUILayout.BeginHorizontal();
curve = EditorGUILayout.CurveField("动画曲线", curve);
if (GUILayout.Button("曲线生成C#代码"))
{
string keys = "new AnimationCurve(";
foreach (Keyframe k in curve.keys)
{
string key = string.Format("new Keyframe({0}f,{1}f,{2}f,{3}f),", k.time, k.value, k.inTangent, k.outTangent);
keys += key;
}
keys = keys.TrimEnd(',');
keys += ")";
Debug.Log(keys);
}
GUILayout.EndHorizontal();
}