0
点赞
收藏
分享

微信扫一扫

GUILayout类和EditorGUILayout类

小月亮06 2022-04-29 阅读 45
unity

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 输入框

方法参数对应类型:

BoundsFieldBoundsIntField
BoundsBoundsInt

Rect 输入框

方法参数对应类型:

RectFieldRectIntField
RectRect

Vector 输入框

方法参数对应类型:

Vector2FieldVector2IntFieldVector3FieldVector3IntFieldVector4Field
Vector2Vector2IntVector3Vector3IntVector4

数字、文本输入框

方法参数对应类型:

DoubleFieldFloatFieldIntFieldLongFieldTextField/TextArea
doublefloatintlongstring

Delay 延迟输入框

方法参数对应类型:

DelayedDoubleFieldDelayedFloatFieldDelayedIntFieldDelayedTextField
doublefloatintstring

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 的“脏”标志。
ClearProgressBarRemoves 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确定对象是否存储在磁盘中。
IsRunningUnderCPUEmulationGets 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显示“打开文件夹”对话框并返回所选的路径名称。
OpenPropertyEditorOpen properties editor for an Object.
RequestScriptReloadUnity 编辑器会在下一帧上异步重新加载脚本程序集。这会重置所有脚本的状态,但是 Unity 不会编译任何自上次编译以来已更改的代码。
SaveFilePanel显示“保存文件”对话框并返回所选的路径名称。
SaveFilePanelInProject在项目的 Assets 文件夹中显示“保存文件”对话框并返回所选的路径名称。
SaveFolderPanel显示“保存文件夹”对话框并返回所选的路径名称。
SetCameraAnimateMaterials设置此摄像机以启用编辑器中的材质动画。
SetCameraAnimateMaterialsTime为此摄像机设置渲染时使用的全局时间。
SetCustomDiffToolSet custom diff tool settings.
SetDefaultParentObjectSets the default parent object for the active Scene.
SetDialogOptOutDecision此方法显示模态对话框,使用户可以选择不再次显示当前对话框。
SetDirtyMarks 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();
}
举报

相关推荐

0 条评论