【unity游戏开发介绍之UGUI篇】UGUI概述和基础使用

注意:考虑到UGUI的内容比较多,我将UGUI的内容分开,并全部整合放在【unity游戏开发介绍之UGUI篇】专栏里,感兴趣的小伙伴可以前往逐一查看学习。

文章目录

  • 前言
    • 1、UI系统的重要性
    • 2、UGUI概述
      • 2.1 基本定义
      • 2.2 UGUI发展历史
    • 3、学习UGUI的必要性
    • 4、UGUI核心优势
  • 一、如何在unity中使用UGUI
  • 二、UGUI基础组件
    • 1、Canvas对象上依附的组件
    • 2、EventSystem对象上依附的组件
  • 三、2D视图和矩形工具
  • 四、UGUI的源码
    • 1、方法一 安装目录查看
    • 2、方法二 直接在unity的项目工程中查看
  • 专栏推荐
  • 完结

前言

1、UI系统的重要性

UI是游戏中最重要的组成部分之一,无论是2D还是3D游戏,绝大多数游戏功能都与UI相关,UI开发是游戏开发中的核心技能,贯穿整个开发周期。良好的UI系统设计对游戏体验至关重要。
在这里插入图片描述
Unity的UI系统提供了多种解决方案,主要包括IMGUI(GUI)、NGUI、UGUI(Unity UI)、FGUI以及最新推出的UIToolkit。目前,UGUI(Unity UI) 仍然是游戏开发中最主流、应用最广泛的UI方案,因其与Unity引擎深度集成、功能完善且学习曲线平缓。

本专栏将重点探究UGUI的核心功能与实践技巧,帮助开发者快速掌握游戏UI的开发流程。若对其他UI系统感兴趣,可参考官方文档或社区资源进一步学习。

其他UI系统也各有特点:

  • GUI 适合编辑器扩展和快速原型开发。

  • NGUI 作为早期第三方插件曾广泛使用,现已逐渐被UGUI取代。

  • FGUI 更适合需要复杂动画和跨平台UI的团队。

  • UIToolkit 是Unity新一代UI工具,更适合编辑器工具和运行时UI的混合开发场景。

2、UGUI概述

2.1 基本定义

  • 官方名称:Unity UI
  • Unity引擎内置的UI系统
  • 基于GameObject的UI解决方案
  • 专为游戏内UI设计,不能用于编辑器扩展开发
  • 是目前Unity 商业游戏开发中使用最广泛的UI系统开发解决方案

2.2 UGUI发展历史

  1. Unity4.6之前:

    • 官方仅提供基础的GUI系统用于游戏UI的开发
    • 民间大佬开发的第三方插件NGUI因为更为高级和方便,成为主流解决方案,但是需要付费购买。
  2. Unity4.6版本:

    • Unity官方招募NGUI作者加入团队
    • 协助Unity开发出UGUI系统
  3. Unity5时代:

    • 由于UGUI刚推出后功能不够完善,所以经历了较长的过渡期。
    • 到Unity5时代UGUI功能逐渐完善,开始全面普及成为行业标准

3、学习UGUI的必要性

  • 至今哪怕是现在新推出的unity6,UGUI仍是Unity游戏开发中最流行的UI解决方案
  • 被绝大多数商业游戏公司采用
  • Unity官方持续维护更新
  • 掌握UGUI是Unity开发者必备的核心技能

4、UGUI核心优势

  1. 完全集成于Unity编辑器中
  2. 基于Canvas的渲染系统
  3. 支持多分辨率自适应
  4. 提供丰富的内置UI组件
  5. 强大的事件系统
  6. 与Unity其他系统无缝集成

一、如何在unity中使用UGUI

直接在Hierarchy窗口中右键,选择UI。UI中所有内容都是UGU相关控件
在这里插入图片描述
我们随便创建一个UGU控件,比如我这里添加一个Image(图像)
在这里插入图片描述
会发现unity自动为我们添加了两个对象——Canvas画布和EventSystem事件系统对象,且UGU控件作为Canvas画布对象的子集。我们也可以先主动创建Canvas画布和EventSystem事件系统对象,再在Canvas下创建UI控件。
在这里插入图片描述

二、UGUI基础组件

1、Canvas对象上依附的组件

  • RectTransform:Ul对象位置锚点控制组件,主要用于控制位置和对其方式
  • Canvas:画布组件,主要用于渲染UI控件
  • Canvas Scaler:画布分辨率自适应组件,主要用于分辨率自适应
  • Graphic Raycaster:射线事件交互组件,主要用于控制射线响应相关在这里插入图片描述

2、EventSystem对象上依附的组件

EventSystemInput System UI Input Module:玩家输入事件响应系统和独立输入模块组件,主要用于监听玩家操作。
在这里插入图片描述
注意:值得注意的是,如果你使用的是低版本的unity或者没有使用unity的新输入系统inputsystem,可能找不到Input System UI Input Module组件,取而代之的是Standalone Input Module组件。具体可以参考:【unity游戏开发之InputSystem——07】InputSystem+UGUI配合使用

三、2D视图和矩形工具

切换场景为2D视图,多使用矩形工具,可以很方便我们进行UI的编辑开发。
在这里插入图片描述

四、UGUI的源码

UGUI的源码我们是可以查看的,随着自己的能力提升,以后可以深入去了解一下它的一些逻辑实现。

1、方法一 安装目录查看

Unity安装目录下\Editor\Data\Resources\PackageManager\BuiltlnPackages\com.unity.ugui比如我们就在D:\UnityHub\Unity\Editor\6000.0.42f1\Editor\Data\Resources\PackageManager\BuiltInPackages\com.unity.ugui
在这里插入图片描述

2、方法二 直接在unity的项目工程中查看

这里的unity UI其实就是
在这里插入图片描述
我们可以右键在资源管理器中显示查看
在这里插入图片描述
在这里插入图片描述


专栏推荐

地址
【零基础入门unity游戏开发——C#篇】
【零基础入门unity游戏开发——unity通用篇】
【零基础入门unity游戏开发——unity3D篇】
【零基础入门unity游戏开发——unity2D篇】
【制作100个Unity游戏】
【推荐100个unity插件】
【实现100个unity特效】
【unity框架/工具集开发】
【unity框架/工具集开发】
【unity游戏开发介绍之InputSystem篇】
【unity游戏开发介绍之动画篇】
【unity游戏开发介绍之UGUI篇】

完结

好了,我是向宇,博客地址:https://xiangyu.blog.csdn.net,如果学习过程中遇到任何问题,也欢迎你评论私信找我。

赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注,你的每一次支持都是我不断创作的最大动力。当然如果你发现了文章中存在错误或者有更好的解决方法,也欢迎评论私信告诉我哦!
在这里插入图片描述

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

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

相关文章

Ubuntu 系统深度清理:彻底卸载 Redis 服务及残留配置

Ubuntu 系统深度清理:彻底卸载 Redis 服务及残留配置 在Ubuntu系统中,Redis是一种广泛使用的内存数据存储系统,用于缓存和消息传递等场景。然而,有时候我们需要彻底卸载Redis,以清理系统资源或为其他应用腾出空间。本…

[ARC196A] Adjacent Delete 题解

假设 n n n 是偶数。如果我们忽略删除相邻数的条件,即可以任选两个数相减,那么答案应该是前 n 2 \frac{n}{2} 2n​ 大的数(记作“较大数”)的和减去前 n 2 \frac{n}{2} 2n​ 小的数(记作“较小数”)的和…

Linux上位机开发实践(关于Qt的移植)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 linux平台上面,很多界面应用,都是基于qt开发的。不管是x86平台,还是arm平台,qt使用的地方都比较多。…

”插入排序“”选择排序“

文章目录 插入排序1. 直接插入排序(O(n^2))举例1:举例2:直插排序的"代码"直插排序的“时间复杂度” 2. 希尔排序(O(n^1.3))方法一方法二(时间复杂度更优) 选择排序堆排序直接选择排序 我们学过冒泡排序,堆排序等等。(回…

FPGA_BD Block Design学习(一)

PS端开发流程详细步骤 1.第一步:打开Vivado软件,创建或打开一个工程。 2.第二步:在Block Design中添加arm核心,并将其配置为IP核。 3.第三步:配置arm核心的外设信息,如DDR接口、时钟频率、UART接口等。 …

【Python] pip制作离线包

制作离线安装包是一种非常实用的方法,尤其是在网络环境受限或需要在多台机器上部署相同环境时。以下是详细的步骤,帮助您创建一个包含所有依赖项的离线安装包,并在后续环境中复用。 步骤 1:准备工具和环境 确保您有一台可以访问互…

为啥物联网用MQTT?

前言 都说物联网用MQTT,那分别使用Http和Mqtt发送“Hello”,比较一下就知道啦 HTTP HTTP请求报文由请求行、头部字段和消息体组成。一个最简单的HTTP POST请求如下: POST / HTTP/1.1 Host: example.com Content-Length: 5 Content-Type: …

操作系统 ------ 五种IO模型

阻塞IO:一个IO请求操作,准备阶段和复制阶段都会阻塞应用程序,直到操作完全完成 非阻塞IO:一个IO操作请求,先判断准备阶段是否完成,如果未完成立即返回,否则,进入复制阶段&#xff0…

service和endpoints是如何关联的?

在Kubernetes中,Service 和 Endpoints 是两个密切关联的对象,它们共同实现了服务发现和负载均衡的功能。以下是它们之间的关联和工作原理: 1. Service 的定义 Service 是一种抽象,定义了一组逻辑上相关的 Pod,以及用…

程序化广告行业(78/89):多因素交织下的行业剖析与展望

程序化广告行业(78/89):多因素交织下的行业剖析与展望 在程序化广告这片充满活力又不断变化的领域,持续学习和知识共享是我们紧跟潮流、实现突破的关键。一直以来,我都渴望能与大家一同探索这个行业的奥秘&#xff0c…

数智化重构供应商管理

当供应链韧性成为核心竞争力,你的供应商管理还在 “摸着石头过河” 吗? 在传统模式下,供应商管理高度依赖人工经验与纸质流程: 入库筛选如“大海捞针”:供应商资质审核停留在Excel表格比对,资质造假、历史…

网络互连与互联网

1.在路由表中找不到目标网络时使用默认路由,默认路由通常指本地网关的地址。 2.OSPF最主要的特征是使用分布式链路状态协议,而RIP使用的是距离向量协议。 3.OSPF使用链路状态公告LSA扩散路由信息 4.内部网关路由协议IGRP是一种动态距离矢量路由协议&a…

Raymarching Textures In Depth

本节课最主要的就是学会hlsl中使用纹理采样 float4 color Texture2DSample(Texobj, TexobjSampler, uv); return color; 课程中的代码(没有这张图我就没做) 课程代码产生深度的原因是uv偏移,黑色区域会不断向左偏移,直到找到白色…

【MQTT-协议原理】

MQTT-协议原理 ■ MQTT-协议原理■ MQTT-服务器 称为"消息代理"(Broker)■ MQTT协议中的订阅、主题、会话■ 一、订阅(Subscription)■ 二、会话(Session)■ 三、主题名(Topic Name&a…

docker容器安装的可道云挂接宿主机的硬盘目录:解决群晖 威联通 飞牛云等nas的硬盘挂接问题

基于Docker部署可道云(KodCloud)时,通过挂载宿主机其他磁盘目录可实现高效、安全的数据管理。具体而言,使用绑定挂载(Bind Mounts)将宿主机目录(如/data/disk2)映射到容器内的可道云…

go语言内存泄漏的常见形式

go语言内存泄漏 子字符串导致的内存泄漏 使用自动垃圾回收的语言进行编程时,通常我们无需担心内存泄漏的问题,因为运行时会定期回收未使用的内存。但是如果你以为这样就完事大吉了,哪里就大错特措了。 因为,虽然go中并未对字符串…

es6学习02-let命令和const命令

一、let命令 1.let块级作用域: let关键字 VS var关键字 2.for循环计数器很适合let命令 var:整个for循环中一直都是同一个i在做1,最后输出的就是10; let:每循环一次都是多一个i的赋值,最后输出是可以调出…

MySQL深分页问题

在项目中有一个数据导出的需求,原来的实现方式也比较简单,根据查询条件分页查所有的数据,然后转成csv的格式一行一行写进文件存储中。 实际上线之后,发现出现了慢查询,具体的sql如下: select * from tabl…

前端面试宝典---创建对象的配置

Object.create 对整个对象的多个属性值进行配置 创建对象 不可更改属性值 // 创建对象 不可更改属性值 let obj Object.create({}, {name: {value: lisi,writable: false,},age: {value: 20,writable: true,} })console.log(初始化obj, obj) obj.name wangwu console.log(…

数据结构:C语言版严蔚敏和解析介绍,附pdf

《数据结构:C语言版(第2版)》严蔚敏李冬梅吴伟民.pdf 《数据结构:C语言版》严蔚敏,李冬梅.pdf 《数据结构C语言第2版习题解析与实验指导》李冬梅.pdf 「《数据结构:C语言版(第2版 )》…