IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> Unity EditorWindow 使用案例 -> 正文阅读

[游戏开发]Unity EditorWindow 使用案例

UnityEditorWindow学习笔记

img

了解EditorWindow的生命周期:

OnEnable():当打开界面的时候调用
OnFocus():当该窗口被聚焦(点击该窗口)
OnGUI():当渲染UI的时候调用
OnSelectionChange():当选择发生更改时调用,选中的可选项(在Project和Hierarchy视图中)
OnLostFocus():从该窗口离开时调用(点击非窗口外其他地方)
OnInspectorUpdate():当属性界面更新时,几乎一直在更
OnHierarchyChange():当场景层次界面发生改变时调用");//在Hierarchy界面改变(增加、减少物体)
OnProjectChange():当项目发生更改时调用");//在Project视图删除、增加文件
OnDisable():当隐藏的时候调用
OnDestroy():当销毁的时候调用
OnValidate():当拖拽式赋值时调用

GUIStyle 用法示例https://www.jianshu.com/p/44078f1f07ef https://blog.csdn.net/RICKShaozhiheng/article/details/52304627

(该Style可以完成一些自定风格的EditorWindow)

GUILayout常用布局接口

GUILayoutOption:基本每个控件方法都有一个可选参数是GUILayoutOption[] Options 这是一个可以控制组件大小之类的选项,在GUILayout类中共有8个。 看名字应该就知道是设置什么的了。

GUILayout.Height() GUILayout.Width()

GUILayout.MaxHeight() GUILayout.MaxWidth()

GUILayout.MinHeight() GUILayout.MinWidth()

GUILayout.ExpandHeight() GUILayout.ExpandWidth()

GetWindow(一定要show,EditorWindow可以调窗口的最大最小等等)

[MenuItem("Extend Windows/MyWindow2")]
public static void ShowWindow()
{
    // 显示某个编辑器窗口。传参即是要显示的窗口类型(类名) 即调用谁的OnGUI 这里调用的时TestEditorWindow
    // 是否为独立窗口 窗口名字 是否聚焦(这个不是很确定)
    EditorWindow rThisWindow = EditorWindow.GetWindow(typeof(TestEditorWindow), false, "Test", false);
    rThisWindow.minSize = new Vector2(500,300);
    rThisWindow.maxSize = new Vector2(800,500);
    rThisWindow.Show();
}
GUILayout.FlexibelSpace //用法示例https://blog.csdn.net/u010331385/article/details/43560235  类似于组件GroupLayout
GUILayout.FlexibelSpace //空格
GUILayout.Label("label");//文本

请添加图片描述

GUILayout.Box(new GUIContent("testBox",texture),new []{GUILayout.Height(200),GUILayout.Width(200)});//Box

在这里插入图片描述

sliderVal = EditorGUILayout.Slider ("Slider", sliderVal, -1, 1);//Slider

在这里插入图片描述

scrollBarValue1 = GUILayout.HorizontalScrollbar(scrollBarValue1,0,0,500,new[]{GUILayout.Width(500)});//ScollBar
scrollBarValue2 = GUILayout.VerticalScrollbar(scrollBarValue2,0,0,200,new[]{GUILayout.Height(200)});

在这里插入图片描述

按钮类控件

普通Button

if (GUILayout.Button("changeColor",GUILayout.MaxWidth(100)))
{
    st.normal.textColor = new Color(Random.Range(0f,1f),Random.Range(0f,1f),Random.Range(0f,1f));
}

在这里插入图片描述
RepeatButton按下时才会为true

if (showBox) //按钮按下的时候这个Box才会显示出来
{
    GUILayout.Box(new GUIContent("testBox",img),new []{GUILayout.Height(200),GUILayout.Width(200)});
    EditorGUILayout.Space();
}

在这里插入图片描述

互斥按钮群体:

gridId = GUILayout.SelectionGrid(gridId, new[] {"1", "2", "3","4","5","6"}, 5);//第二个参数可以控制一行出现多少个按钮

在这里插入图片描述
ToolBar

toolbarid = GUILayout.Toolbar(toolbarid, new[] {"1", "2", "3"});

在这里插入图片描述

Fields

普通fields

GUILayout.TextField("TextField only one line");//单行Fields
EditorGUILayout.Space();
GUILayout.TextArea("TextArea can multiline \n second line \n third line");//多行Fields

在这里插入图片描述

密码形fields

password = GUILayout.PasswordField(password, '?');

在这里插入图片描述
颜色fields

curColor = EditorGUILayout.ColorField(curColor);

在这里插入图片描述

Toggle

isToggle = GUILayout.Toggle (isToggle,"Toggle");
isToggle2 = EditorGUILayout.Toggle("Toggle2", this.isToggle2);

在这里插入图片描述

弹选框类控件

多选弹框

curEnum=(test)EditorGUILayout.EnumFlagsField(curEnum);//test 枚举要符合2进制每一位对应的值 符合按位与的枚举
public enum test
{
    t1 = 1,
    t2 = 2,
    t3 = 4,
    t4 = 8
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VJYPEUoH-1634635775629)(C:\Users\gy\AppData\Roaming\Typora\typora-user-images\image-20211019152142969.png)]

互斥弹框枚举

public enum employee
{
    doctor,
    nurse,
    teacher,
    police
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rzIVosm6-1634635775630)(C:\Users\gy\AppData\Roaming\Typora\typora-user-images\image-20211019152205534.png)]

互斥弹框 int

popindex=EditorGUILayout.IntPopup("IntPopup", popindex, new[] {"1", "2","3","5"}, new[] {1, 2,3});//多余的5是选择不上的 初始会为5 若对其则为0

在这里插入图片描述

多选弹框 int

maskindex=EditorGUILayout.MaskField("Mask",maskindex,new []{"a","b","c","d"});//此时的maskIndex的规律我还没摸清楚

在这里插入图片描述

折叠功能:

foldout = EditorGUILayout.Foldout(foldout, "折叠Label");
if (foldout)
{
    val1=EditorGUILayout.IntField("Attribute1", val1);
    val2=EditorGUILayout.IntField("Attribute2", val2);
}

foldout2=EditorGUILayout.InspectorTitlebar(foldout2,GameObject.Find("Cube"));
if (foldout2)
{
    val3=EditorGUILayout.IntField("Attribute1", val3);
    val4=EditorGUILayout.IntField("Attribute2", val4);
}

在这里插入图片描述
示例图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xHExgdjN-1634635775632)(C:\Users\gy\AppData\Roaming\Typora\typora-user-images\image-20211019172830041.png)]

参考大佬:https://blog.csdn.net/qq_38275140/article/details/84778344

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-10-20 12:48:49  更:2021-10-20 12:48:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/28 0:51:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码