我想移动一个Text对象,代码部分如下。
GameObject.transform.position = new Vector3(-210, -200, 0);
当我在Unity中执行并检查GameObject的posX时,其值变为-1170(在1920x1080中), - 1653.566(16:9)。但是posY可以正常工作。我已经将参考卷积设置为1920x1080,我认为它可能与分辨率设置有关。有什么不对的吗?感谢。
答案 0 :(得分:3)
如果你在谈论统一的ui文本,你应该这样做。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class UITestSO : MonoBehaviour
{
public Text textObject;
void Start ()
{
//Position relative to parent transform
textObject.rectTransform.localPosition = new Vector3 (-210, -200, 0);
//Position in world space
textObject.rectTransform.position = new Vector3 (-210, -200, 0);
}
}
答案 1 :(得分:0)
在Unity中,您在检查器中看到的变换值是相对于gameobject的父级的。但是,当您尝试为游戏对象的位置设置值时(通过指定transform.position = ...),您将处理相对于世界中心的位置(即Vector(0,0,0))。这适用于您是处理3d还是2d。
因此,如果父对象位于Vector(0,0,0),则世界和本地位置将相同。决议没有任何问题。您需要设置相对于父级的值。
这是您为对象设置值的方法。
anObject.transform.localPosition = new Vector3 (X, Y, Z);
虽然没有什么可以阻止您在2D工作流程中使用相同的工作流程,但{4}用于简单的转换。