Unity IMGUI 笔记

文档原文:Immediate Mode GUI (IMGUI) - Unity Manual

IMGUI :即时模式 GUI
用途:
    1、创建游戏内调试显示和工具。(在每帧都会调用的 OnGUI() 中使用)
    2、为脚本组件创建自定义检视面板。
    3、创建新的编辑器窗口和工具以扩展 Unity 本身。

一、IMGUI 基础知识

    GUI 控件声明
    关键:Type (Position, Content)。
        1、Type:指 Control Type(控件类型),通常为 GUI 或 GUILayout 类中的函数。
        2、Position:所有 GUI 控件函数中的第一个参数。类型为 Rect(int, int, int, int),含义:最左侧位置、最顶部位置、总宽度、总高度。均为屏幕空间下的像素值(屏幕宽高:Screen.width、Screen.height)。
        3、Content:GUI 控件函数中的必要参数。类型为 string、Texture、GUIContent等(由具体控件决定),含义:要在控件上显示的内容和tooltip。
    举例:GUI.Button (new Rect (10,10,200,20), "Meet the flashing button")

二、控件类型

    GUI:https://docs.unity3d.com/cn/2020.3/ScriptReference/GUI.html
    GUILayout:https://docs.unity3d.com/cn/2020.3/ScriptReference/GUILayout.html

三、使用 GUIStyle 自定义控件

    1、GUIStyle 旨在模仿 Web 浏览器的层叠样式表 (CSS):分离内容和外观。
    2、所有 GUI 控件函数都有可选的最后一个参数:用于显示控件的 GUIStyle。若忽略,则会使用 Unity 默认的 GUIStyle。
    3、可将 GUIStyle 作为变量显示在Inspector上进行编辑。
    4、GUIStyle 的属性可以动态更改。

四、GUISkin

    1、GUISkin 是 GUIStyle 的集合,当有大量不同的 GUIStyle 可供使用时,可在单个 GUISkin 中定义这些样式。
    2、创建 GUISkin: 菜单栏中选择 Assets > Create > GUI Skin。
    3、应用 GUISkin 至全局:GUI.skin = customSkin。

五、IMGUI 固定布局模式

    1、可以使用 GUI.BeginGroup + GUI.EndGroup 定义包含多个控件的屏幕区域。
    2、Group内的所有控件将根据Group的左上角而不是屏幕的左上角进行定位。
    3、Group可以嵌套。

六、IMGUI 自动布局模式

    1、自动布局模式在创建时不需要 Rect() 参数。控件将自动放置在包含控件的Area或屏幕的最左上角。
    2、可以使用 GUILayout.BeginArea + GUILayout.EndArea 定义有限空间的Area来包含多个控件。   
    3、Area中的可见控件会将宽度拉伸到该Area的整个长度。
    4、可以使用 GUILayout.BeginHorizontal() + GUILayout.EndHorizontal() 定义水平组。水平组内的所有控件都将始终采用水平布局方式。
    5、可以使用 GUILayout.BeginVertical() + GUILayout.EndVertical() 定义垂直组。垂直组内的所有控件都将始终采用垂直布局方式。
    6、垂直组和水平组可以嵌套使用,以实现复杂的排列需求。(重点在于自顶向下分解区域)。
    7、创建空间或组时,可以使用 GUILayoutOption 覆盖某些自动布局参数。 GUILayoutOption是以下函数的返回值:
        GUILayout.Width(float)              固定宽度
        GUILayout.MaxWidth(float)           最大宽度
        GUILayout.MinWidth(float)           最小宽度
        GUILayout.ExpandWidth(bool)         是否扩展宽度
        GUILayout.Height(float)             固定高度
        GUILayout.MaxHeight(float)          最大高度
        GUILayout.MinHeight(float)          最小高度
        GUILayout.ExpandHeight(bool)        是否扩展高度

*** 两种布局模式可以混用

七、扩展 IMGUI(类似制作预设,但是包装在方法中)

    1、复合控件:即将(二)中的基本控件进行组合。同时显示、封装内部排列和交互。
    2、可将复合控件统一整理至一个静态类中,方便各处复用。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NRatel

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值