包名:com.unity.ugui
Canvas:
??容納所有UI元素的區(qū)域。
??一種帶有畫布組件的游戲?qū)ο蟆?/p>
??使用EventSystem對象來協(xié)助消息系統(tǒng)。
繪制順序:
按照在 Hierarchy 中顯示的順序繪制,由上到下。
如果兩個(gè) UI 元素重疊,則后一個(gè)元素將顯示在前一個(gè)元素之上
渲染模式:(Render Mode)
Screen Space-Overlay:此渲染模式將 UI 元素放置于在場景之上渲染的屏幕上。如果調(diào)整屏幕大小或更改分辨率,則畫布將自動(dòng)更改大小來適應(yīng)此情況。
Screen Space-Camera:UI 元素由此攝像機(jī)渲染,這意味著攝像機(jī)設(shè)置會(huì)影響 UI 的外觀。如果調(diào)整屏幕大小、更改分辨率或攝像機(jī)視錐體發(fā)生改變,則畫布也將自動(dòng)更改大小來適應(yīng)此情況。
World Space:畫布大小可用矩形變換進(jìn)行手動(dòng)設(shè)置,而 UI 元素將基于 3D 位置在場景中的其他對象前面或后面渲染。此模式對于要成為世界一部分的 UI 非常有用。這種界面也稱為“敘事界面”。
基本布局:錨點(diǎn)
矩形的不同角可以錨定到父矩形中的不同點(diǎn)。
錨點(diǎn)的位置以父矩形寬度和高度的分?jǐn)?shù)(或百分比)定義。
如果在拖動(dòng)錨點(diǎn)時(shí)按住 Shift 鍵,矩形的相應(yīng)角將與錨點(diǎn)一起移動(dòng)。
左下角錨點(diǎn)位置百分比為(0,0)
Anchor Min:左下角的錨點(diǎn)手柄
Anchor Max:右上角的錨點(diǎn)手柄 錨點(diǎn)在一起:產(chǎn)生固定的寬高,顯示的字段為 Pos X、Pos Y、Width 和 Height。Pos X 和 Pos Y 值指示樞軸相對于錨點(diǎn)的位置。 錨點(diǎn)分開:和父矩形一起拉伸,字段可以部分或全部更改為“左”、“右”、“上”和“下”。這些字段定義由錨點(diǎn)定義的矩形內(nèi)的填充。如果錨點(diǎn)水平分離,則使用“左”和“右”字段,如果垂直分離,則使用“頂部”和“底部”字段。
Image: (圖像) Type:
-
Simple:均勻縮放整個(gè)精靈
-
Sliced:使用3*3分區(qū),拉伸中心部分
-
Tiled:類似Slided,平鋪中心部分
-
Filled:與Simple相同的顯示方式,可以規(guī)定顯示方式、開始方向、顯示百分比來控制精靈填充顯示
Sprite Editor能夠?qū)D像分成9個(gè)區(qū)域。
Toggle Group:(開關(guān)組) 創(chuàng)建:為已創(chuàng)建的Toggle創(chuàng)建一個(gè)Empty Parent,為其添加Toggle Group組件。 Allow Switch Off:是否允許選擇的開關(guān)關(guān)閉
動(dòng)畫集成:可以使用Unity的動(dòng)畫系統(tǒng)完全的動(dòng)畫化控件不同狀態(tài)之間的過渡。
使用:
-
Transition屬性 ->Animation
-
將動(dòng)畫器組件附加到控制器元素 單擊“Auto Generate Animation”,會(huì)生成一個(gè)動(dòng)畫控制器
-
自定義動(dòng)畫 Window>Animation打開編輯
-
點(diǎn)擊錄制按鈕
-
添加關(guān)鍵幀
-
退出錄制
-
ps:任何數(shù)量的屬性都可以在這一個(gè)關(guān)鍵幀中設(shè)置其參數(shù)。
自動(dòng)布局:布局元素 + 布局控制器
布局元素:具有矩形變換以及其他可選組件的游戲?qū)ο?/p>
??布局元素不直接設(shè)置自身的大小,而是可由用作布局控制器的其他組件使用布局元素提供的信息來計(jì)算布局元素要使用的大小。
屬性:
-
最小大小(Min Width、Min Height),常規(guī)單位
-
偏好大小(Preferred Width、Preferred Height),常規(guī)單位
-
靈活大小(Flexible Width、Flexibe Height),相對單位(同級(jí)填充的可用空間比例)
ps:
-
完全分配所有偏好大小之后,才分配靈活大小。
-
指定了靈活大小但未指定偏好大小的布局元素將保持其最小大小,直到其他布局元素已擴(kuò)展到完整偏好大小為止,僅在此后才基于額外的可用空間開始擴(kuò)展。
布局控制器:可以控制自己的布局元素(其本身所在的同一游戲?qū)ο螅?,或者也可控?strong>子布局元素。
用作布局控制器的組件本身也可以同時(shí)用作布局元素。
Aspect Ratio Fitter:(寬高比適配器) Aspect Mode:
-
None:不適應(yīng)寬高比
-
Width Controls Height:根據(jù)寬度自動(dòng)調(diào)整高度
-
Height Controls Width:根據(jù)高度調(diào)整寬度
-
Fit In Parent:使矩形適應(yīng)父項(xiàng)的矩形,同時(shí)保持寬高比。父矩形中可能有一些空間不會(huì)由此矩形覆蓋。(contain )
-
Envelope Parent:自動(dòng)調(diào)整寬度、高度、位置和錨點(diǎn),使矩形覆蓋父項(xiàng)的整個(gè)區(qū)域,同時(shí)保持寬高比。此矩形可能比父矩形延伸更廣。(cover)
布局組:水平布局組、垂直布局組、網(wǎng)格布局組
富文本:類似HTML
We are <b>absolutely <i>definitely</i> not</b> amused
ps:標(biāo)簽參數(shù)不能包含空格。
Unity支持的所有標(biāo)簽
標(biāo)簽 | 描述 | 示例 | 注意事項(xiàng) |
b | 以粗體顯示文本。 | We are <b>not</b> amused. | |
i | 以斜體顯示文本。 | We are <i>usually</i> not amused. | |
size | 根據(jù)參數(shù)值設(shè)置文本的大?。ㄒ韵袼貫閱挝唬?。 | We are <size=50>largely</size> unaffected. | 盡管此標(biāo)簽可用于 Debug.Log,但如果大小設(shè)置得太大,您會(huì)發(fā)現(xiàn)窗口欄和控制臺(tái)中的行間距看起來很奇怪。 |
color | 根據(jù)參數(shù)值設(shè)置文本的顏色。可使用傳統(tǒng)的 HTML 格式指定顏色。#rrggbbaa …其中的字母對應(yīng)于十六進(jìn)制數(shù)字對,表示顏色的紅、綠、藍(lán)和 Alpha(透明度)值。例如,完全不透明的青色將指定為 color=#00ffffff… 可通過大寫或小寫形式指定十六進(jìn)制值;#FF0000 等效于 #ff0000。 |
We are <color=#ff0000ff>colorfully</color> amused | 另一種選擇是使用顏色的名稱。這種方法更容易理解,但當(dāng)然,顏色范圍受限,并始終假設(shè)顏色完全不透明。<color=cyan>some text</color> 下表中列出了可用的顏色名稱。 |
material | 這僅對文本網(wǎng)格有用,使用參數(shù)指定的材質(zhì)渲染文本部分。值為 Inspector 顯示的文本網(wǎng)格材質(zhì)數(shù)組的索引。 | We are <material=2>texturally</material> amused | |
quad | 這僅對文本網(wǎng)格有用,渲染與文本內(nèi)聯(lián)的圖像。采用指定圖像材質(zhì)的參數(shù)、圖像高度參數(shù)(以像素為單位)以及另外四個(gè)表示待顯示圖像的矩形區(qū)域的參數(shù)。與其他標(biāo)簽不同,quad 不會(huì)包裹一段文本,因此沒有結(jié)束標(biāo)簽;斜杠字符放在初始標(biāo)簽的末尾,表示“自動(dòng)關(guān)閉”。 | <quad material=1 size=20 x=0.1 y=0.1 width=0.5 height=0.5> | 這將選擇渲染器材質(zhì)數(shù)組中位置的材質(zhì),并將圖像的高度設(shè)置為 20 像素。圖像的矩形區(qū)域由 x、y、寬度和高度值決定,這些值全部表示為紋理的未縮放寬度和高度的一定比例 |
支持的顏色
下表列出了可以在 <color>
富文本標(biāo)簽中使用名稱而不是十六進(jìn)制值的顏色。
顏色名稱 | 十六進(jìn)制值 |
aqua(等同于 cyan) | #00ffffff |
black | #000000ff |
blue | #0000ffff |
brown | #a52a2aff |
cyan(等同于 aqua) | #00ffffff |
darkblue | #0000a0ff |
fuchsia(等同于 magenta) | #ff00ffff |
green | #008000ff |
grey | #808080ff |
lightblue | #add8e6ff |
lime | #00ff00ff |
magenta(等同于 fuchsia) | #ff00ffff |
maroon | #800000ff |
navy | #000080ff |
olive | #808000ff |
orange | #ffa500ff |
purple | #800080ff |
red | #ff0000ff |
silver | #c0c0c0ff |
teal | #008080ff |
white | #ffffffff |
yellow | #ffff00ff |
事件系統(tǒng):事件系統(tǒng)模塊之間通信的管理器和協(xié)調(diào)器
主要作用:
-
管理視為選中狀態(tài)的游戲?qū)ο?/p>
-
管理正在使用的輸入模塊
-
管理射線投射(如果需要)
-
根據(jù)需要更新所有輸入模塊
消息系統(tǒng):https://docs.unity.cn/cn/2022.3/Manual/MessagingSystem.html
輸入模塊:
-
獨(dú)立輸入模塊(Standalone Input Module)
-
觸摸輸入模塊 (TouchInputModule) :已棄用
支持的事件:
-
IPointerEnterHandler - OnPointerEnter - 當(dāng)指針進(jìn)入對象時(shí)調(diào)用
-
IPointerExitHandler - OnPointerExit - 當(dāng)指針退出對象時(shí)調(diào)用
-
IPointerDownHandler - OnPointerDown - 在對象上按下指針時(shí)調(diào)用
-
IPointerUpHandler - OnPointerUp - 松開指針時(shí)調(diào)用(在指針正在點(diǎn)擊的游戲?qū)ο笊险{(diào)用)
-
IPointerClickHandler - OnPointerClick - 在同一對象上按下再松開指針時(shí)調(diào)用
-
IInitializePotentialDragHandler - OnInitializePotentialDrag - 在找到拖動(dòng)目標(biāo)時(shí)調(diào)用,可用于初始化值
-
IBeginDragHandler - OnBeginDrag - 即將開始拖動(dòng)時(shí)在拖動(dòng)對象上調(diào)用
-
IDragHandler - OnDrag - 發(fā)生拖動(dòng)時(shí)在拖動(dòng)對象上調(diào)用
-
IEndDragHandler - OnEndDrag - 拖動(dòng)完成時(shí)在拖動(dòng)對象上調(diào)用
-
IDropHandler - OnDrop - 在拖動(dòng)目標(biāo)對象上調(diào)用
-
IScrollHandler - OnScroll - 當(dāng)鼠標(biāo)滾輪滾動(dòng)時(shí)調(diào)用
-
IUpdateSelectedHandler - OnUpdateSelected - 每次勾選時(shí)在選定對象上調(diào)用
-
ISelectHandler - OnSelect - 當(dāng)對象成為選定對象時(shí)調(diào)用
-
IDeselectHandler - OnDeselect - 取消選擇選定對象時(shí)調(diào)用
-
IMoveHandler - OnMove - 發(fā)生移動(dòng)事件(上、下、左、右等)時(shí)調(diào)用
-
ISubmitHandler - OnSubmit - 按下 Submit 按鈕時(shí)調(diào)用
-
ICancelHandler - OnCancel - 按下 Cancel 按鈕時(shí)調(diào)用
射線投射器:(Raycaster)
-
Graphic Raycaster(圖形射線投射器):用于 UI 元素,位于畫布上,并在畫布中搜索
-
Physics 2D Raycaster(2D 物理射線投射器):用于 2D 物理元素
-
Physics Raycaster(物理射線投射器):用于 3D 物理元素
設(shè)計(jì)用于多種分辨率的 UI:
-
確定位置:使用錨點(diǎn)來適應(yīng)不同的寬高比
-
大小縮放:畫布縮放器 (Canvas Scaler),隨屏幕大小縮放(Scale With Screen Size)
畫布縮放器
屬性:
UI Scale Model:(確定畫布中的 UI 元素的縮放方式)
-
Constant Pixel Size:無論屏幕大小如何,UI 元素都保持相同的像素大小。
-
Scale With Screen Size:屏幕越大,UI 元素越大。
-
Constant Physical Size:無論屏幕大小和分辨率如何,UI 元素都保持相同的物理大小。
Scale With Screen Size:
原理:默認(rèn)將寬度或當(dāng)前分辨率與畫布縮放器的寬度比較,將結(jié)果作為所有內(nèi)容的的縮放因子.
目前橫向分辨率 960 x 640 的寬度是縱向畫布縮放器 640 x 960 的 1.5 倍,因此布局的比例增大到了 1.5。
屬性: | 功能: |
Reference Resolution | UI 布局設(shè)計(jì)的目標(biāo)分辨率(設(shè)計(jì)圖尺寸)。如果屏幕分辨率較大,則 UI 會(huì)放大,如果較小,則 UI 會(huì)縮小。 |
Screen Match Mode | 在當(dāng)前分辨率的寬高比不適應(yīng)參考分辨率時(shí),用于縮放畫布區(qū)域的模式。 |
Match Width or Height | 以寬度、高度或二者的某種平均值作為參考來縮放畫布區(qū)域。 |
Expand | 水平或垂直擴(kuò)展畫布區(qū)域,使畫布不會(huì)小于參考。 |
Shrink | 水平或垂直裁剪畫布區(qū)域,使畫布不會(huì)大于參考。 |
Match | 確定是否以寬度、高度或二者的某種平均值作為參考進(jìn)行縮放。 |
Reference Pixels Per Unit | 如果精靈具有此“Pixels Per Unit”設(shè)置,則精靈中的每個(gè)像素將覆蓋 UI 中的一個(gè)單位。 |
使 UI 元素適應(yīng)其內(nèi)容的大小:內(nèi)容大小適配器 (Content Size Fitter)
原理:文本組件充當(dāng)布局元素,可提供有關(guān)最小大小和偏好大小的大小信息。在手動(dòng)布局中,不會(huì)使用此信息。內(nèi)容大小適配器是一種布局控制器,可監(jiān)聽布局元素提供的布局信息,并根據(jù)此信息控制矩形變換的大小。
適應(yīng)其內(nèi)容的大小的同時(shí)添加填充:水平布局組/垂直布局組 + 內(nèi)容大小適配器
-
將 Horizontal Fit 和/或 Vertical Fit 設(shè)置為 Preferred 設(shè)置。
-
使用水平布局組/垂直布局組中的填充屬性來添加和調(diào)整填充。
原理:
-
布局組會(huì)監(jiān)聽該組內(nèi)的子項(xiàng)提供的布局信息。布局組將確定該組必須為多大(最小大小和偏好大?。┎拍軌虬凶禹?xiàng),并充當(dāng)布局元素來提供這些有關(guān)最小大小和偏好大小的信息。
-
內(nèi)容大小適配器會(huì)監(jiān)聽同一游戲?qū)ο笊系娜魏尾季衷靥峁┑牟季中畔?,此處由水平(或垂直)布局組提供。根據(jù)設(shè)置,內(nèi)容大小適配器隨后會(huì)基于此信息控制矩形變換的大小。
使布局組的子項(xiàng)適應(yīng)各自的大小:禁用布局組上的 Child Force Expand 開關(guān)。如果子項(xiàng)本身也是布局組,可能還需要禁用這些子項(xiàng)上的 Child Force Expand 開關(guān)。
原理:一個(gè)游戲?qū)ο罂梢杂卸鄠€(gè)組件,每個(gè)組件都提供有關(guān)最小大小、偏好大小和靈活大小的布局信息。優(yōu)先級(jí)系統(tǒng)將確定哪些值優(yōu)先于其他值。布局元素組件的優(yōu)先級(jí)高于文本、圖像和布局組組件,因此可用于覆蓋它們提供的任何布局信息值。
如果希望某些子項(xiàng)進(jìn)行擴(kuò)展以便填充額外的可用空間,而其他子項(xiàng)不擴(kuò)展,該怎么辦?
向需要擴(kuò)展的子項(xiàng)添加布局元素組件并在這些布局元素上啟用 Flexible Width 或 Flexible Height 屬性,即可輕松控制此行為。父布局組仍應(yīng)禁用 Child Force Expand 開關(guān),否則所有子項(xiàng)將靈活擴(kuò)展。
原理:布局組監(jiān)聽子項(xiàng)提供的布局信息時(shí),還會(huì)考慮覆蓋的靈活大小。然后,在控制子項(xiàng)的大小時(shí),布局組不會(huì)讓子項(xiàng)的大小超過偏好大小。但是,如果布局組啟用了 Child Force Expand 選項(xiàng),則始終會(huì)使所有子項(xiàng)的靈活大小至少為 1。
通過腳本創(chuàng)建UI元素: https://docs.unity.cn/cn/2022.3/Manual/HOWTO-UICreateFromScripting.html
-
創(chuàng)建預(yù)制體
-
實(shí)例化:Instantiate方法,在設(shè)置實(shí)例化的 UI 元素的父項(xiàng)時(shí),建議使用 Transform.SetParent 方法并將 worldPositionStays 參數(shù)設(shè)置為 false。
-
定位:借助其矩形變換 (Rect Transform) 定位
-
自定義:獲取各種組件并更改其屬性
創(chuàng)建屏幕過度:動(dòng)畫控制器 + 兩個(gè)狀態(tài)(Open/Closed)+ 布爾參數(shù)(Open)
管理屏幕(Scene):SceneManager
查看Scene索引:File—>Build setting
使用LoadScene加載Scene
//第二個(gè)參數(shù)AddSceneMode.Additive表示當(dāng)前場景不銷毀,并加載需要的場景
SceneManager.LoadScene("SceneName", LoadSceneMode.Additive);
//LoadSceneMode.Single:銷毀當(dāng)前場景,加載要加載的場景文章來源:http://www.zghlxwxcb.cn/news/detail-860965.html
SceneManager.LoadScene(Scene索引,LoadSceneMode.Single);文章來源地址http://www.zghlxwxcb.cn/news/detail-860965.html
到了這里,關(guān)于Unity UI——UGUI的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!