用户界面-如何在Unity 4.6+中获得UI元素的文本移动



当玩家接近一个道具时,我希望它的一些属性被显示出来,但我不希望这些信息掩盖了玩家。我有下面的代码不工作。

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);
    }
}

Debug.Log显示出来,所以所有条件都满足了,但是文本没有移动。有人有什么想法吗?

问题是tranform.position的getter返回位置Vector3的'副本',因此调用Set只会改变该Vector3的'副本',而不是矩形变换的位置。

这是因为Vector3是一个结构体而不是类,因此不能通过引用传递。https://msdn.microsoft.com/en-us/library/ms173109.aspx

所以我不调用set,而是给位置变量

赋一个新的向量3

t.rectTransform.position = new Vector3(transform.position.x-50, transform.position.y, transform.position.z);

如果你正在调试,你可以验证你正在显示的位置是你期望的,目前'Set'方法的第二个和第三个参数是:

 this.transform.position.z

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

相关内容

  • 没有找到相关文章

最新更新