【发布时间】:2015-05-07 12:01:20
【问题描述】:
所以,我在统一中使用 C# 来使用 Unity UI 放置一些对象,并且我有一个对象在脚本中的位置与其在场景中的位置不同。我在函数中有以下代码:
using UnityEngine;
using System.Collections;
public class SeedChecker : MonoBehaviour {
Vector3 lockedPos;
RectTransform tran;
// Use this for initialization
void Awake () {
tran = GetComponent<RectTransform>();
}
public void LockPos(Vector3 pos) {
tran.localPosition = pos;
lockedPos = pos;
print (tran.localPosition);
}
}
例如,这段代码打印出它的 x 位置是 -60——这是我正在寻找的正确数字——屏幕中间左侧 60 像素。但是,当我在检查器和场景中查看时,x 位置是 0——并且对象正好位于屏幕中间。这导致了一个相当令人沮丧的情况,我也有talked about here。这很令人沮丧,因为它说它得到了正确的位置,但是当我将这个正确的位置分配给对象时,它会转到我认为不正确的位置。这是对 RectTransforms 中局部位置如何工作的误解吗?我的对象是几个对象的子对象,但所有对象都归零到屏幕的中心,并且比例值为“1”。
【问题讨论】:
-
这个代码工作正常,我试了一下,我得到了我发送的 Lockpos。你用锚连接了画布吗?
标签: c# user-interface unity3d transform