無(wú)代碼開(kāi)發(fā)平臺(tái)(國(guó)內(nèi)無(wú)代碼開(kāi)發(fā)平臺(tái)推薦)">國(guó)內(nèi)無(wú)代碼開(kāi)發(fā)平臺(tái)(國(guó)內(nèi)無(wú)代碼開(kāi)發(fā)平臺(tái)推薦)
1194
2022-05-30
什么是RectTransform?
創(chuàng)建一個(gè)UGUI組件時(shí),查看其Inspector面板,原來(lái)Transform已經(jīng)被替換成RectTransform,面板屬性也不一樣了,如下圖:
Unity官方對(duì)RectTransform的描述:
Position, size, anchor and pivot information for a rectangle.
RectTransforms are used for GUI but can also be used for other things. It’s used to store and manipulate the position, size, and anchoring of a rectangle and supports various forms of scaling based on a parent RectTransform.
矩形的位置、大小、錨點(diǎn)和樞軸信息。
RectTransforms用于GUI,也可以用于其他用途。它用于存儲(chǔ)和操作矩形的位置、大小和錨定,并支持基于父矩形變換的各種形式的縮放
相較于RectTransform,RectTransform提供了更強(qiáng)大的功能來(lái)對(duì)矩形進(jìn)行操作,這主要?dú)w功于新增加的兩個(gè)概念:Anchor(錨點(diǎn))和Pivot(中心)。
做適配時(shí),主要設(shè)置好錨點(diǎn)和要讓其顯示的位置就可以了,
對(duì)其基礎(chǔ)設(shè)置:
//posx,y,z --> 相對(duì)位置 go.transform.localPosition = new Vector3(35, 0, 0); //也可以這樣 go.GetComponent
官方文檔:https://docs.unity3d.com/ScriptReference/RectTransform.html
基礎(chǔ)操作就不在這里說(shuō)了,官方有很詳細(xì)的說(shuō)明,其他博主也有很詳盡的解析,,,
實(shí)現(xiàn)目標(biāo):在不同分辨率下生成的UI在相對(duì)位置
如下圖:(不管是什么比例,都和頂部保持一定的距離)
PS:如果只在此處使用,那么完全可以將錨點(diǎn)設(shè)置為這樣:
但是我多處使用,又不想為了適配來(lái)兩個(gè)預(yù)制體使用,,,只好用代碼來(lái)幫助我實(shí)現(xiàn)了
UGUI內(nèi)置的兩個(gè)方法,
SetInsetAndSizeFromParentEdge SetSizeWithCurrentAnchors
獲取動(dòng)態(tài)生成的UI(RectTransform),以及調(diào)試好的相對(duì)位置偏移,調(diào)用如下方法:
///
很實(shí)用的方法,,,這樣可以實(shí)現(xiàn)在不同分辨率下生成的UI在相對(duì)位置,(當(dāng)然如果可以事先對(duì)預(yù)制體設(shè)置好了適配,生成時(shí)直接設(shè)置位置就可以了)
還有一種很便捷的方式(推薦使用):
大致思路:設(shè)置要目標(biāo)UI的錨點(diǎn),然后通過(guò)anchoredPosition3D屬性,設(shè)置去相對(duì)于錨點(diǎn)的位置,(不是相對(duì)于中心點(diǎn),如下面的img_3)
using UnityEngine; using UnityEngine.UI; public class TestTransDemo : MonoBehaviour { public Image img_1; public Image img_2; public Image img_3; // Use this for initialization void Start () { //錨點(diǎn)為中心 img_1.transform.localPosition = Vector3.zero; //此時(shí)錨點(diǎn)在左上 img_2.rectTransform.anchoredPosition3D = Vector3.zero; //設(shè)置錨點(diǎn)為右上 img_3.GetComponent
下面1,2,3和上面代碼img_1,2,3一一對(duì)應(yīng),,,
運(yùn)行效果圖:
HTML
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。