User interface 如何使UI元素的文本在Unity 4.6+;中移动;?

User interface 如何使UI元素的文本在Unity 4.6+;中移动;?,user-interface,unity3d,User Interface,Unity3d,当玩家接近某个物品时,我想显示它的一些属性,但我不想让这些信息掩盖玩家。我有以下不起作用的代码 t = GetComponentInChildren<Text> (); void OnTriggerEnter(Collider col){ if (col.gameObject.tag.Equals ("Player")) { playerInRange = true; col.GetComponent<Controller>().

当玩家接近某个物品时,我想显示它的一些属性,但我不想让这些信息掩盖玩家。我有以下不起作用的代码

t = GetComponentInChildren<Text> ();

void OnTriggerEnter(Collider col){
    if (col.gameObject.tag.Equals ("Player")) {
        playerInRange = true;
        col.GetComponent<Controller>().itemsInRange.Add(this.gameObject);
        GetComponentInChildren<Canvas> ().enabled = true;
    }
    if (player.transform.position.x < this.transform.position.x) {
        Debug.Log ("On yer right!");
        t.rectTransform.position.Set(this.transform.position.x+50,  this.transform.position.z, this.transform.position.z);
    }
    if (player.transform.position.x > this.transform.position.x) {
        t.rectTransform.position.Set(this.transform.position.x-50,  this.transform.position.z, this.transform.position.z);
    }
}
t=getComponentChildren();
无效对撞机(对撞机列){
if(col.gameObject.tag.Equals(“玩家”)){
playerlange=true;
col.GetComponent().itemsInRange.Add(this.gameObject);
getComponentChildren().enabled=true;
}
if(player.transform.position.xthis.transform.position.x){
t、 rectTransform.position.Set(this.transform.position.x-50,this.transform.position.z,this.transform.position.z);
}
}

此时会显示Debug.Log,因此所有条件都得到满足,但文本不会移动。有人有什么想法吗?

如果您正在进行调试,是否可以验证您显示的位置是否在您预期的位置,当前“Set”方法的第二个和第三个参数是:

 this.transform.position.z

中间的一个不是应该是position.y吗?

问题是
transform.position
的getter返回位置向量3的“副本”,因此调用Set只会更改该向量3的“副本”,而不会更改rect变换的位置

这是因为Vector3是一个结构而不是类,因此不是通过引用传递的

因此,我不调用set,而是为position变量指定一个新的向量3


t.rectTransform.position=新矢量3(transform.position.x-50,transform.position.y,transform.position.z)

其中一个.transform.position.z应该是y,但这并没有导致此问题。所有位置字段均未更改。赢家鸡肉晚餐!谢谢