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,但这并没有导致此问题。所有位置字段均未更改。赢家鸡肉晚餐!谢谢