Unity 3D GUI 简介||OnGUI Button 控件

news2025/1/17 0:59:42

游戏开发过程中,开发人员往往会通过制作大量的图形用户界面( Graphical User Interface,GUI )来增强游戏与玩家的交互性。

Unity 3D 中的图形系统分为 OnGUINGUIUGUI等,这些类型的图形系统内容十分丰富,包含游戏中通常使用到的按钮、图片、文本等控件。

概念

图形用户界面是指采用图形方式显示的计算机用户操作界面。

与早期计算机使用的命令行界面相比,图形界面相对来说在视觉上更具有吸引力,信息传达能力更生动、交互性更强。

《植物大战僵尸》中的 GUI

发展

在游戏开发的整个过程中,游戏界面占据了非常重要的地位。

玩家在启动游戏的时候,首先看到的是游戏的GUI,其中包括贴图、按钮、高级控件等。

早期的 Unity 3D 使用的是 OnGUI 系统,后来升级到 NGUI 系统。

在 Unity 4.6 之后,官方推出了新的 UGUI 系统,采用全新的独立坐标系,为游戏开发者提供了更高的运转效率。

 OnGUI Button 控件

在 Unity 3D 开发中 Button 控件是游戏开发中最常使用的控件之一,用户常常通过 Button 控件来确定其选择行为,当用户单击 Button 控件时,Button 控件会显示按下的效果,并触发与该控件关联的游戏功能。

在游戏中通常用作游戏界面、游戏功能、游戏设置的开关。

一般来说,按钮分两种:

  • 普通按钮。

  • 图片按钮。

普通按钮

普通按钮是系统默认显示的按钮,Unity 3D 的普通按钮背景呈半透明状态,显示白色文字。

普通按钮的使用方法如下:

 
  1. public static function Button(position:Rect, text:string):bool;
  2. public static function Button(position:Rect, image:Texture):bool;
  3. public static function Button(position:Rect, content:GUIContent):bool;
  4. public static function Button(position:Rect, text:string, style:GUIStyle):bool;
  5. public static function Button(position:Rect, image:Texture, style:GUIStyle):bool;
  6. public static function Button(position:Rect, content:GUIContent, style:GUIStyle):bool;

注:

  • position 指按钮在屏幕上的位置以及长宽值。

  • text 指按钮上显示的文本。

Button 控件的参数如下表所示。

参数描述
position设置控件在屏幕上的位置及大小。
image设置控件上显示的纹理图片。
style设置控件使用的样式。
text设置控件上显示的文本。
content设置控件的文本、图片和提示。

使用案例

  1. 启动 Unity 3D 创建新项目。

  1. 执行 File → Save Scene 命令,并保存场景。

  1. 创建 JavaScript 脚本。

  1. 打开脚本编辑器,输入脚本语句,然后保存。

 
  1. function OnGUI(){
  2. if(GUI.Button(Rect(0, 0, 100, 50), "click here")){
  3. print("you have click here!");
  4. }
  5. }

  1. 将脚本与主摄像机相连。

将脚本拖到 Hierarchy 视图中的 Main Camera 对象中产生关联。

  1. 测试脚本。

单击 Unity 3D 工具栏上的运行按钮对脚本进行测试,如下图所示,在 Game 视图中出现了一个按钮,按钮上显示 "click here",单击该按钮,在 Unity 3D 主界面底部的状态栏上输出 "You have click here"。

图片按钮

Button 控件除了可以显示文字以外,还可以显示贴图。

贴图是一种美化按钮的方法,开发者可以设定按钮的背景图片,比如水晶按钮、卡通按钮等。

在 Unity 3D 中实现 Button 贴图十分容易,只要将图片作为一个参数传递到 Button 函数中即可。

Button 贴图方法如下:

 
  1. public static function Button(position:Rect, image:Texture):bool;
  2. public static function Button(position:Rect, image:Texture, style:GUIStyle):bool;

其中 Position 定义了按钮在屏幕上的位置及长宽值,image 为按钮上显示的图片。

使用案例

  1. 启动 Unity 3D 创建新项目,将其命名为 Button

  1. 在菜单中执行 File → Save Scene 命令,保存当前场景,命名为 scene,即在 Unity 3D 中创建了一个游戏场景。

  1. 单击 Project 视图中 create 右侧的下拉三角形,选择 JavaScript ,创建 JavaScript 脚本。

  1. 在 Project 视图中双击该脚本文件,打开脚本编辑器,输入下列脚本语句:

 
  1. var btnTexture:Texture;
  2. var atnTexture:Texture;
  3. function OnGUI(){
  4. if(!btnTexture){
  5. Debug.LogError("Please assign a texture on the inspector");
  6. return;
  7. }
  8. if(!atnTexture){
  9. Debug.LogError("Please assign a texture on the inspector");
  10. return;
  11. }
  12. if(GUI.Button(Rect(Screen.width/2-50, Screen.height/2+130, 70, 70),atnTexture)){
  13. Application.LoadLevel("play");
  14. }
  15. if(GUI.Button(Rect(Screen.width/2+30, Screen.height/2+130, 70, 70),btnTexture)){
  16. Application.LoadLevel("exit");
  17. }
  18. }

  1. 保存脚本(Ctrl+S 键)。

  1. 将脚本与主摄像机相连。

  1. 单击主摄像机,在 Inspector 属性面板中添加纹理图片。

  1. 单击 play 按钮测试效果,可以看见按钮已经换成了二维卡通图片的形式,如下图所示。

 

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

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

相关文章

第05章 数组、排序和查找

数组 基本介绍 数组可以存放多个同一类型的数据,数组也是一种数据类型,是引用类型。 即:数组就是一组数据。 数组的使用 1、数组的定义 方法一: 数据类型[] 数组名 new 数据类型[大小] 说明:int[] a new int[5…

【C++ Primer】阅读笔记(5):vector|迭代器|数组

目录 简介参考结语简介 Hello! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出~ ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计算机专业,获得过国家奖学金,有幸在竞赛中拿过一些国奖、省奖…已保研 学习经验:…

数图互通高校房产管理——CAD图形管理

数图互通房产管理系统在这方面做得比较全面; 支持通过建筑物的楼层CAD图查看房间属性和使用信息,实现图数结合、以图管房、图数互查、数图互通、图文一体化。 1.1支持客户端和AutoCAD无缝集成 支持客户端和AutoCAD无缝集成,实现在客户端/Aut…

Acwing---796.子矩阵的和

子矩阵的和1.题目2.基本思想3.代码实现1.题目 输入一个n行m列的整数矩阵,再输入q个询问,每个询问包含四个整数1,y1,2,y2,表示一个子矩阵的左上角坐标和右下角坐标。 对于每个询问输出子矩阵中所有数的和。…

质性分析软件nvivo的学习(三)

0、前言: 这部分内容是,质性分析软件nvivo的学习(二)的衔接内容,建议看完:质性分析软件nvivo的学习(一)(二)再看这部分内容。这里的笔记都是以nvivo12作为学…

高成长、高潜力、高社区影响,达坦科技入选 2022 中国新锐技术先锋企业

2023 年 1 月 4日,中国技术先锋年度评选 | 2022 中国新锐技术先锋企业榜单正式发布。作为中国领先的新一代开发者社区,SegmentFault 思否依托数百万开发者的用户数据分析,各科技企业在国内技术领域的行为及影响力指标,最终评选出 …

【学习】网络压缩:知识蒸馏、参数量化、动态计算,PPO

文章目录一、知识蒸馏Knowledge Distillation二、参数量化结构设计:深度方向可分卷积Depthwise Separable Convolution1、Depthwise Convolution三、动态计算Dynamic Computation四、From on-policy to off-policy(PPO)一、知识蒸馏Knowledge Distillati…

Python蓝桥杯训练:数组和字符串 Ⅳ

Python蓝桥杯训练:数组和字符串 Ⅳ 文章目录Python蓝桥杯训练:数组和字符串 Ⅳ一、买卖股票的最佳时机二、删除排序数组中的重复项三、找出字符串中第一个匹配项的下标四、将整数转换为两个无零整数的和一、买卖股票的最佳时机 给定一个数组 prices &…

k8s 实战1:WordPress搭建

文章目录第一步:部署MariaDB第二步:部署WordPress第三步:映射WordPress Pod 端口号,让它在集群外可见第四步:创建反向代理的 Nginx,让我们的网站对外提供服务WordPress架构图第一步:部署MariaDB…

如何使用LightningChart JS创建高性能可视化的HTML图表?

LightningChart JS是一款高性能的JavaScript图标库,专注于实时数据可视化,以“快如闪电”享誉全球,是Microsoft Visual Studio数据展示速度最快的2D和3D图表制图组件,可实时呈现超过10亿数据点的海量数据。 LightningChart .JS |…

Redis基础篇——Redis常见命令及数据类型详解

文章目录1. Redis常见命令2. Redis数据结构介绍3. 通用命令KEYSDELEXISTSEXPIRETTL4. Redis 命令类型4.1 String 类型String 类型常见命令key的层级格式4.2 Hash 类型Hash 类型常用命令4.3 List 类型List 类型的常见命令4.4 Set 类型Set 类型的常见命令4.5 SortSet 类型SortedS…

全局描述符表

文章目录段描述符全局描述符表GDT段选择子进入保护模式步骤在开始介绍全局描述符之前,先了解一下段描述符。 段描述符 内存段是一片内存区域,访问内存就要提供段基址(段基址属性)以及段界限属性(约束段大小&#xff…

美团前端一面必会react面试题

state 和 props 触发更新的生命周期分别有什么区别? state 更新流程: 这个过程当中涉及的函数: shouldComponentUpdate: 当组件的 state 或 props 发生改变时,都会首先触发这个生命周期函数。它会接收两个参数:nextP…

分布式存储综述与方案选型

文章目录引言基本诉求存储选型考虑的要素分布式存储的野蛮生长史主要开源选型GFS(Google File System)HDFS (Hadoop Distributed File System)miniocephTFSSwiftfastDFSGridFSMooseFSGlusterFSMogileFS一些国产的xFS阿里腾讯百度京东网易字节跳动美团滴滴结论数据库选型分布式存…

Java基础之《netty(21)—WebSocket长连接开发》

一、实例要求 1、http协议是无状态的,浏览器和服务器间的请求响应一次,下一次会重新创建连接 2、要求:实现基于webSocket的长连接的全双工的交互 3、改变http协议多次请求的约束,实现长连接了,服务器可以发送消息给浏…

Go第 10 章 :面向对象编程(上)

Go第 10 章 :面向对象编程(上) 10.1 结构体 10.1.1 看一个问题 10.1.2 使用现有技术解决 单独的定义变量解决 代码演示: 使用数组解决 代码演示: 10.1.3 现有技术解决的缺点分析 使用变量或者数组来解决养猫的问题,不利于数…

AI与艺术——图像生成网络经典算法

生成模型是一种训练模型进行无监督学习的模型,即,给模型一组数据,希望从数据中学习到信息后的模型能够生成一组和训练集尽可能相近的数据。图像生成(Image generation,IG)则是指从现有数据集生成新的图像的…

代码块和执行顺序

1、什么是代码块 使用{}定义的一段代码我们称之为代码块 一般分为: 1. 普通代码块 2. 实例代码块 3. 静态代码块 2、普通代码块 定义在方法中的代码块,可以用于限定局部变量的生命周期。 public class Main{public static void main(String[] args) {{…

【分享】百度更喜欢自媒体站,9种方法让你轻松玩转微博营销

微博营销是指通过微博平台为商家、个人等创造价值而执行的一种营销方式。 以下九种方式,你一定要学习一下,视频最后,有干货。 1、注重价值的传递 企业博客经营者首先要改变观念——企业微博的“索取”与“给予”之分,企业微博是…

2023你冲不冲,冲冲冲冲~~

前言:\textcolor{Green}{前言:}前言: 💞2022已经成为历史,趁着还没有遗忘来看看我这一年发生了什么事。 在这一年中有很多的收获也有一些遗憾,但是这不会让我停下来,未来的2023又会发生什么&…