IMGUI学习
简介
来源
GUI 全称 IMGUI,全称“即时模式游戏用户交互界面”
是Unity里最早的GUI系统
主要作用
- 游戏程序调试工具
- 为脚本组件创建自定义检视面板
- 创建新的编辑器窗口,以及扩展Unity本身
注意:不要用IMGUI编写玩家GUI
工作原理
在继承MonoBehavior的脚本中的特殊函数里,每帧调用OnGUI方法。
1 | private void OnGUI() |
- 注意事项
- 在游戏里每帧调用执行
- 一般只在其中执行GUI界面的操作相关函数
- 该函数在
OnDisable()
之前,LateUpdate()
之后执行 - 只要继承
MonoBehaviour
的脚本,都可以在OnGUi中绘制UI
绘制
1.GUI绘制的共同点
- 同属于GUI类中的静态方法,可以直接调用
- 共同参数大同小异
类型 | 参数 | 常用字段 |
---|---|---|
位置 | Rect | 位置:x y 尺寸:w h |
文本 | string | |
图片 | Texture | |
综合 | GUIContent | |
自定义样式 | GUIStyle |
- 每一种控件都有多种重载,是各个参数的排列组合
必备的参数 是 位置信息和显示信息
2.控件
1. 文本控件
1 | public Texture texture; |
2. GUIStyle
- 影响GUI控件的样式
1 | public GUIStyle guiStyle; |
3. 按钮控件
- 绘制按钮
1 | public Rect rect; |
- 普通按钮点击逻辑
1 | public Rect rect; |
- 长按按钮点击逻辑
1 | public Rect rect; |
4. 多选框
- 绘制多选框
1 | public Rect rect; |
- 接受多选框信息
1 | public Rect rect; |
注意:当对Toggle使用Style时,使用fixedWidth与fixedHeight控制图片大小,使用Padding修改文字位置。
5. 单选框
- 单选框的实现是基于多选框的。
1 | public int curSelIndex = 1; |
6. 输入框
- 普通输入
1 | public string inputStr = ""; |
- 密码输入
1 | public string inputStr = ""; |
7. 拖动条
1 | public float inputValH; |
8. 图片绘制
1 | public Texture texture; |
9. 框绘制
1 | private void OnGUI() |
10. 工具栏
- 水平工具栏
1 | public int selIndex = 0; |
- 网格工具栏
1 | public int selIndex = 0; |
11. 分组
- 分组里,GUI的大小与位置会受到组Rect的影响
1 | public Rect rect = new Rect(0,0,100,100); |
12. 滚动列表
- 滚动列表里,内容会被限制在Rect里,而viewRect则是总体的View内容大小
1 | public Rect rect = new Rect(0,0,100,800); |
13. 窗口
- 窗口
1 | public Rect rect = new Rect(100,100,100,100); |
- 模态窗口
模态窗口位于所有窗口的最上层。当模态窗口出现时,其他窗口无法点击。
1 | public Rect rect = new Rect(100,100,100,100); |
- 拖动窗口
1 | public Rect rect = new Rect(100,100,100,100); |
3. 样式
1. 颜色设置
- 全局颜色
1 | GUI.color = Color.red; |
- 文本颜色
1 | GUI.contentColor = Color.red; |
- 背景颜色
1 | GUI.backgroundColor = Color.red; |
2. 整体皮肤样式
GUISkin 是 所有GUI的Style的一个集合。