Unity 编辑器篇|(四)编辑器拓展GUI类 (全面总结 | 建议收藏)

目录

  • 1. 前言
  • 2. 参数
    • 2.1 静态变量
    • 2.2 静态函数
    • 2.3 委托
  • 3. 功能
    • 3.1 按钮:Button、RepeatButton
    • 3.2 文本:Label 、TextField 、TextArea 、PasswordField
    • 3.3 滑动条:HorizontalScrollbar 、VerticalScrollbar
    • 3.4 滑条:VerticalSlider 、HorizontalSlider
    • 3.5 切换框:Toggle
    • 3.6 工具栏:Toolbar
    • 3.7 自动布局框:Box
    • 3.8 按钮网格:SelectionGrid
    • 3.9 窗口:Window 、ModalWindow
    • 3.10 绘制纹理:DrawTexture

1. 前言

  • GUI 类是 Unity GUI 的接口,并且具有手动定位功能。
  • “即时模式”GUI 系统(也称为 IMGUI)是一个完全独立的功能系统,不同于 Unity 基于游戏对象的主 UI 系统。IMGUI 是一个代码驱动的 GUI 系统,主要用作程序员的工具。为了驱动该系统,需在实现脚本上调用 OnGUI 函数
  • 即时模式 GUI 系统常用于:
    • 创建游戏内调试显示和工具。
    • 为脚本组件创建自定义检视面板。
    • 创建新的编辑器窗口和工具以扩展 Unity 本身。

2. 参数

2.1 静态变量

属性描述
backgroundColor用于 GUI 渲染的所有背景元素的全局着色颜色。
changed如果任何控件更改了输入数据的值,则返回 true。
colorGUI 的全局着色颜色。
contentColor为 GUI 渲染的所有文本着色。
depth当前正在执行的 GUI 行为的排序深度。
enabled是否启用了 GUI?
matrixGUI 变换矩阵。
skin要使用的全局皮肤。
tooltip鼠标指针当前悬停在其上或具有键盘焦点的控件的工具提示。(只读)

2.2 静态函数

属性描述
BeginGroup开始一个组。必须与 EndGroup 调用配对使用。
BeginScrollView在 GUI 内开始一个滚动视图。
Box在 GUI 层上创建一个框。
BringWindowToBack将特定窗口放置到该浮动窗口的后方。
BringWindowToFront将特定窗口放置到该浮动窗口的前方。
Button创建一个单击按钮。当用户点击该按钮时,立即执行一些操作。
DragWindow使窗口可被拖动。
DrawTexture在一个矩形内绘制纹理。
DrawTextureWithTexCoords使用给定的纹理坐标在矩形内绘制纹理。
EndGroup结束组。
EndScrollView结束使用 BeginScrollView 调用开始的滚动视图。
FocusControl将键盘焦点移动到某个命名控件。
FocusWindow使某个窗口成为激活窗口。
GetNameOfFocusedControl获取具有焦点的命名控件的名称。
HorizontalScrollbar创建一个水平滚动条。滚动条是用于滚动文档的控件。大多数情况下,您需要的可能是滚动视图。
HorizontalSlider用户可以拖动的水平滑动条,用于在最小值和最大值之间更改某值。
Label在屏幕上创建一个文本或纹理标签。
ModalWindow显示一个模态窗口。
PasswordField创建一个可让用户输入密码的文本字段。
RepeatButton创建一个只要用户按住就一直处于激活状态的按钮。
ScrollTo滚动包含的所有滚动视图,让它们尝试使 position 可见。
SelectionGrid创建一个按钮网格。
SetNextControlName设置下一个控件的名称。
TextArea创建一个可供用户编辑字符串的多行文本区域。
TextField创建一个可供用户编辑字符串的单行文本字段。
Toggle创建一个打开/关闭的开关按钮。
Toolbar创建一个工具栏。
UnfocusWindow从所有窗口移除焦点。
VerticalScrollbar创建一个垂直滚动条。滚动条是用于滚动文档的控件。大多数情况下,您需要的可能是滚动视图。
VerticalSlider用户可以拖动的垂直滑动条,用于在最小值和最大值之间更改某值。
Window创建一个弹出窗口。

2.3 委托

属性描述
WindowFunction开在窗口中绘制 GUI 的回调(与 GUI.Window 配合使用)。

3. 功能

3.1 按钮:Button、RepeatButton

  • Button:点击该按钮时,立即执行一些操作。
  • RepeatButton:用户按住就一直处于激活状态。
using UnityEngine;public class GUIExample : MonoBehaviour
{void OnGUI(){if (GUI.Button(new Rect(10, 70, 50, 30), "Button")){Debug.Log("Button");}if (GUI.RepeatButton(new Rect(80, 70, 100, 30), "RepeatButton")){Debug.Log("RepeatButton");}}
}

1

3.2 文本:Label 、TextField 、TextArea 、PasswordField

  • Label:在屏幕上创建一个文本或纹理标签。
  • TextField:创建一个可供用户编辑字符串的单行文本字段。
  • TextArea:创建一个可供用户编辑字符串的多行文本区域。
  • PasswordField:创建一个可让用户输入密码的文本字段。
using UnityEngine;public class GUIExample : MonoBehaviour
{public Texture2D textureToDisplay;public string fieldToEdit = "Hello World";public string areaToEdit = "Hello World\nI've got 2 lines...";public string passwordToEdit = "My Password";void OnGUI(){//LabelGUI.Label(new Rect(10, 10, 100, 20), "Hello World!");GUI.Label(new Rect(140, 10, textureToDisplay.width, textureToDisplay.height), textureToDisplay);//TextFieldfieldToEdit = GUI.TextField(new Rect(10, 80, 200, 20), fieldToEdit, 25);//TextAreaareaToEdit = GUI.TextArea(new Rect(10, 120, 200, 100), areaToEdit, 200);//PasswordFieldpasswordToEdit = GUI.PasswordField(new Rect(10, 250, 200, 20), passwordToEdit, "*"[0], 25);}
}

2

3.3 滑动条:HorizontalScrollbar 、VerticalScrollbar

  • HorizontalScrollbar :创建一个水平滚动条。滚动条是用于滚动文档的控件。大多数情况下,您需要的可能是滚动视图。
  • VerticalScrollbar:创建一个垂直滚动条。滚动条是用于滚动文档的控件。大多数情况下,您需要的可能是滚动视图。
using UnityEngine;public class GUIExample : MonoBehaviour
{public float hSbarValue;public float vSbarValue;void OnGUI(){hSbarValue = GUI.HorizontalScrollbar(new Rect(50, 25, 100, 30), hSbarValue, 1.0F, 0.0F, 10.0F);vSbarValue = GUI.VerticalScrollbar(new Rect(25, 25, 30, 100), vSbarValue, 1.0F, 10.0F, 0.0F);}
}

在这里插入图片描述

3.4 滑条:VerticalSlider 、HorizontalSlider

  • VerticalSlider:用户可以拖动的垂直滑动条,用于在最小值和最大值之间更改某值。
  • HorizontalSlider :用户可以拖动的水平滑动条,用于在最小值和最大值之间更改某值。
using UnityEngine;public class GUIExample : MonoBehaviour
{public float hSliderValue = 0.0F;public float vSliderValue = 0.0f;void OnGUI(){hSliderValue = GUI.HorizontalSlider(new Rect(50, 25, 100, 30), hSliderValue, 0.0F, 10.0F);vSliderValue = GUI.VerticalSlider(new Rect(25, 25, 30, 100), vSliderValue, 10.0f, 0.0f);}
}

6

3.5 切换框:Toggle

  • Toggle:创建一个打开/关闭的开关按钮。
using UnityEngine;public class GUIExample : MonoBehaviour
{public Texture aTexture;private bool toggleTxt = false;private bool toggleImg = false;void OnGUI(){toggleTxt = GUI.Toggle(new Rect(10, 10, 100, 30), toggleTxt, "A Toggle text");toggleImg = GUI.Toggle(new Rect(10, 50, 50, 50), toggleImg, aTexture);}
}

6

3.6 工具栏:Toolbar

  • Toolbar:创建一个工具栏。
using UnityEngine;public class GUIExample : MonoBehaviour
{public int toolbarInt = 0;public string[] toolbarStrings = new string[] { "Toolbar1", "Toolbar2", "Toolbar3" };void OnGUI(){toolbarInt = GUI.Toolbar(new Rect(25, 25, 250, 30), toolbarInt, toolbarStrings);}
}

7

3.7 自动布局框:Box

  • Box:在 GUI 层上创建一个框。
using UnityEngine;public class GUIExample : MonoBehaviour
{void OnGUI(){GUI.Box(new Rect(0, 0, Screen.width, Screen.height), "This is a box");}
}

8

3.8 按钮网格:SelectionGrid

  • SelectionGrid:创建一个按钮网格。
using UnityEngine;public class GUIExample : MonoBehaviour
{public int selGridInt = 0;public string[] selStrings = new string[] { "Grid 1", "Grid 2", "Grid 3", "Grid 4" };void OnGUI(){selGridInt = GUI.SelectionGrid(new Rect(50, 40, 100, 50), selGridInt, selStrings, 2);}
}

9

3.9 窗口:Window 、ModalWindow

  • Window :创建一个弹出窗口。
  • ModalWindow:模态窗口与 Window 类似,但它将始终位于所有其他 GUI 的上方,并且在显示期间,保证是所有 GUI 输入和事件的唯一接收者。显示 ModalWindow 期间,其他控件将不处理输入。注意,一次只能显示一个 ModalWindow。
using UnityEngine;public class GUIExample : MonoBehaviour
{public Rect windowRect = new Rect(20, 20, 120, 50);public Rect modalWindowRect = new Rect(150, 20, 120, 50);void OnGUI(){windowRect = GUI.Window(0, windowRect, DoMyWindow, "My Window");modalWindowRect = GUI.ModalWindow(1, modalWindowRect, DoMyWindow, "My ModalWindow");}void DoMyWindow(int windowID){if (GUI.Button(new Rect(10, 20, 100, 20), "Hello World")){print("Got a click");}}
}

10

3.10 绘制纹理:DrawTexture

  • DrawTexture:在一个矩形内绘制纹理。
属性描述
position要在其中绘制纹理的屏幕矩形。
image要显示的 Texture。
scaleMode当图像的宽高比不适合要绘制的宽高比时,如何缩放图像。
alphaBlend绘制图像时是否应用 Alpha 混合(默认启用)。
imageAspect用于源图像的宽高比。如果为 0(默认值),则使用图像的宽高比。传入 w/h 来指定所需的宽高比。这让您能够在不改变像素宽度和高度的情况下调整源图像的宽高比。
using UnityEngine;public class GUIExample : MonoBehaviour
{public Texture aTexture;void OnGUI(){if (!aTexture){return;}GUI.DrawTexture(new Rect(10, 10, 60, 60), aTexture, ScaleMode.StretchToFill, true, 10.0F);}
}

11

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/618013.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

表单生成器基于(form-create-designer+ant design vue)

效果展示 1.源码地址: 前端:https://gitee.com/houshixin/form-design-ui 后端:https://gitee.com/houshixin/form-design-web 2.单独使用前端的时候就把请前后台的接口注释就可以 3.都启动的话: 1).先导入数据库 2.表…

C++代码重用:继承与组合的比较

目录 一、简介 继承 组合 二、继承 三、组合 四、案例说明 4.1一个电子商务系统 4.1.1继承方式 在上述代码中,Order类继承自User类。通过继承,Order类获得了User类的成员函数和成员变量,并且可以添加自己的特性。我们重写了displayI…

【java八股文】之Redis基础篇

1、Redis有哪几种基本的数据类型 字符串类型:用于存储文章的访问量Hash:用来存储key-value的数据结构,当单个元素比较小和元素数量比较少的时候 ,底层是用ziplist存储。通常可以用来存储一些对象之类的List: 底层采用的quicklist …

2024儿童台灯哪个品牌更护眼推荐?五款知名品牌台灯推荐

只要有了娃,家长的吃穿用度可能不会特别讲究,但总想给孩子好的东西,尤其是关系到他们身心健康的,可以说是一掷千金。特别是眼睛视力方面,特别担心会遗传给孩子,自从他上幼儿园,我就一直在物色一…

WSL不同版本的Ubuntu更换清华镜像,加速Ubuntu软件下载速度

文章目录 不同版本的Ubuntu使用清华镜像,加速Ubuntu软件下载速度1. 备份源软件配置文件2. 复制镜像源3. 修改软件源配置文件4. 更新软件包列表,升级软件包等内容5. 从仓库中下载其它软件可能存在的问题 不同版本的Ubuntu使用清华镜像,加速Ubu…

鸿蒙Harmony--LocalStorage--页面级UI状态存储详解

走的太急疼的是脚,逼的太紧累的是心,很多时候,慢一点也没关系,多给自己一些耐心和等待,保持热爱,当下即是未来,生活自有安排! 目录 一,定义 二,LocalStorageProp定义 三…

Java Web 开发 从入门到实战(课后习题)

第1章 Web 前端基础 1.在以下标记中&#xff0c;用于改置页面标题的是&#xff08;&#xff09;。 A. <title> B. <caption> C. <head> D. <html> 注&#xff1a;caption是表格名称&#xff08;标题&#xff09; 2. 若设计网页的背景图形为bg.png&…

使用Mixtral-offloading在消费级硬件上运行Mixtral-8x7B

Mixtral-8x7B是最好的开放大型语言模型(LLM)之一&#xff0c;但它是一个具有46.7B参数的庞大模型。即使量化为4位&#xff0c;该模型也无法在消费级GPU上完全加载(例如&#xff0c;24 GB VRAM是不够的)。 Mixtral-8x7B是混合专家(MoE)。它由8个专家子网组成&#xff0c;每个子…

Linux--LNMP架构及应用部署

4.2 LNMP架构及应用部署 4.2.1构建LNMP网站平台 为了与Nginx、PHP环境保持一致&#xff0c;仍选择采用源代码编译的方式安装MySQL组件。以5.5.22 版本为例&#xff0c;安装过程如下所述。 &#xff08;1&#xff09;编译安装MySQL。 [rootnode01 ~]# yum -y install ncurses-…

Java中锁的解决方案

前言 在上一篇文章中&#xff0c;介绍了什么是锁&#xff0c;以及锁的使用场景&#xff0c;本文继续给大家继续做深入的介绍&#xff0c;介绍JAVA为我们提供的不同种类的锁。 JAVA为我们提供了种类丰富的锁&#xff0c;每种锁都有不同的特性&#xff0c;锁的使用场景也各不相…

Java 面试题 - 多线程并发篇

线程基础 创建线程有几种方式 继承Thread类 可以创建一个继承自Thread类的子类&#xff0c;并重写其run()方法来定义线程的行为。然后可以通过创建该子类的实例来启动线程。 示例代码&#xff1a; class MyThread extends Thread {public void run() {// 定义线程的行为} …

JUC02同步和锁

同步&锁 相关笔记&#xff1a;www.zgtsky.top 临界区 临界资源&#xff1a;一次仅允许一个进程使用的资源成为临界资源 临界区&#xff1a;访问临界资源的代码块 竞态条件&#xff1a;多个线程在临界区内执行&#xff0c;由于代码的执行序列不同而导致结果无法预测&am…

近视的孩子用什么灯?学生考研护眼台灯推荐

随着时代快速发展&#xff0c;2022年我国近视人数达到了7亿&#xff0c;呈现低龄化趋势&#xff0c;儿童及青少年人数占了53.8%。现在学业负担都很重&#xff0c;每个家长都不希望自己的孩子近视或加深近视了&#xff0c;都会想尽一切办法保护视力。而护眼台灯就成了家长购买台…

Qt中QGraphicsView架构下实时鼠标绘制图形

上一章节介绍了关于QGraphicsView的基础讲解&#xff0c;以及简单的类图创建&#xff0c;由上一章节中最后展示的动画效果来看&#xff0c;今年主要讲述如何在QGraphicsView架构下&#xff0c;实时拖动鼠标绘制图形&#xff01; 今天主要以矩形为例&#xff0c;再来看一下展示…

苹果电脑RAW图像处理软件Capture One Pro 22 mac软件介绍

Capture One Pro 22 for mac是一款专业的RAW文件转换器和图像编辑软件&#xff0c;拥有更新的处理引擎、市场领先的性能和强大的新功能&#xff0c;可为 500 多台高端相机提供具有美丽色彩和令人难以置信的细节的终极图像质量。 Capture One Pro 22 for Mac版软件介绍 Capture…

Vue-17、Vue人员列表过滤(案例)

1、watch实现 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>列表渲染过滤</title><script type"text/javascript" src"https://cdn.jsdelivr.net/npm/vue2/dist/vue.js&qu…

JavaScript Web Worker用法指南

&#x1f9d1;‍&#x1f393; 个人主页&#xff1a;《爱蹦跶的大A阿》 &#x1f525;当前正在更新专栏&#xff1a;《VUE》 、《JavaScript保姆级教程》、《krpano》 ​ ​ ✨ 前言 Web Worker可以将耗时任务放到后台执行,避免阻塞UI。本文将详细介绍Web Worker的用法,让你…

FineBI实战项目一(22):各省份订单个数及订单总额分析开发

点击新建组件&#xff0c;创建各省份订单个数及订单总额组件。 选择自定义图表&#xff0c;将province拖拽到横轴&#xff0c;将cnt和total拖拽到纵轴。 调节纵轴的为指标并列。 修改横轴和纵轴的标题。 修改柱状图样式&#xff1a; 将组件拖拽到仪表板。 结果如下&#xff1a;…

【专业英语】计算机专业英语(第三版)清华大学出版社

专业英语 部分专业名词 短语 在这里插入图片描述

FlinkCDC的分析和应用代码

前言&#xff1a;原本想讲如何基于Flink实现定制化计算引擎的开发&#xff0c;并以FlinkCDC为例介绍&#xff1b;发现这两个在表达上不知以谁为主&#xff0c;所以先分析FlinkCDC的应用场景和技术实现原理&#xff0c;下一篇再去分析Flink能在哪些方面&#xff0c;做定制化计算…