![](/img/trans.png)
[英]How can I modify the height of a rect transform, while making it appear as it is the same position as before in unity?
[英]Position of rect Transform in unity UI
我在使用 Unity 的 UI rectTransform 進行編程時發現了一個非常令人困惑的問題:
在檢查器中,我們可以發現 RectTransform 的位置被設置為(0,0,0)
但是在Start()
的代碼中,當我打印位置時:
parentObject = transform.parent.gameObject;
Debug.Log("parentObject rectTransform :" + parentObject.GetComponent<RectTransform>().localPosition);
這會給我一個位置:
parentObject rectTransform :Panel: (0.0, -562.5, 0.0)
UnityEngine.Debug:Log(Object)
NewWorkerController:Start() (at Assets/Scripts/NewWorkerController.cs:60)
當我們嘗試獲取position
而不是localPosition
時,事情會更加混亂:
parentObject rectTransform :Panel: (621.0, 1365.5, 0.0)
UnityEngine.Debug:Log(Object)
NewWorkerController:Start() (at Assets/Scripts/NewWorkerController.cs:60)
我還在 playMode 期間檢查了這個 rectTransform 的 posX 和 posY 這表明它沒有被改變(一直顯示(0,0,0)
)
那有什么問題?
您在RectTransform
組件中看到的不是本地位置。 手冊說:
定位UI元素
UI元素通常使用其Rect變換定位。 如果UI元素是布局組的子元素,它將自動定位並且可以跳過定位步驟。
定位矩形變換時,首先確定它是否具有或應該具有任何拉伸行為是有用的。 當anchorMin和anchorMax屬性不相同時,會發生拉伸行為。
對於非拉伸矩形變換,通過設置anchoredPosition和sizeDelta屬性可以最輕松地設置位置。 anchoredPosition指定樞軸相對於錨點的位置。 sizeDelta與沒有拉伸時的大小相同。
對於拉伸Rect變換,使用offsetMin和offsetMax屬性設置位置可能更簡單。 offsetMin屬性指定rect的左下角相對於左下錨點的角。 offsetMax屬性指定rect右上角相對於右上角的角
資料來源: https : //docs.unity3d.com/Manual/HOWTO-UICreateFromScripting.html
在您的情況下,您有一個非拉伸矩形變換。 因此,嘗試打印錨定位置:
parentObject = transform.parent.gameObject;
Debug.Log("parentObject rectTransform :" + parentObject.GetComponent<RectTransform>().anchoredPosition);
減少混淆並更好地了解更改 RectTransform 如何影響腳本中看到的值的一種方法。 (例如場景/檢查器設置的變化如何反映在腳本成員變量中)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.