【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.pswp.cn/diannao/78719.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/78719.shtml
英文地址,請注明出處:http://en.pswp.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版 )》…