GUI在Unity中与移动相机对齐文本

时间:2016-01-28 20:59:02

标签: c# unity5 guitext

我正在Unity制作一款自上而下的射击游戏类型。玩家可以在世界中移动,但是相机随身移动,因此玩家总是在屏幕中间。

我正在尝试在屏幕的左上角显示一些文字。屏幕,所以我将一个GUItext组件附加到主摄像头。结果非常有趣 - 玩家将文本飞镖移出屏幕的那一刻。

文本应该显示的是由播放器控制的,所以我在播放器脚本中添加了以下代码片段:

public GUIText scoreText;
void Update ()
    {
        scoreText.pixelOffset = new Vector2 (300, 300);
    }

void UpdateScore ()
    {
        scoreText.text = "Lives: " + lives;
    }

但这并没有改变任何内容,void UpdateScore ()也没有改变。

我对Unity很新,所以这个可能是一个非常简单的错误...但是我做错了什么?

编辑:void UpdateScore ()现在可以从void FixedUpdate ()拨打电话。

编辑(再次):我通过创建一个没有任何内容的新空对象来修复问题,除了转换(从不移动)和GUI文本组件。我现在遇到的问题是GUI文本上的锚点工作非常奇怪 - 只有当我把它放在左下方时才有效(我希望它在左上角)。试图更改锚点会将其移动到屏幕外的某个位置。这是我的层次结构:enter image description here

2 个答案:

答案 0 :(得分:0)

确保您的GUIText组件已附加到其自身不移动的GameObject。我猜它现在就在你的播放器或相机上。

(当附加了GUIText组件的GameObject移动时,显示文本的屏幕位置也会移动。)

答案 1 :(得分:0)

你确定你知道GUIText的锚点是做什么的吗?锚点是偏移量适用的文本上的哪个点。例如。如果锚点是"左上角",并且像素偏移是(300,300),则文本的左上角将是300左右的像素,高于左下角的300像素屏幕。如果锚点是"左下角",则文本的左下角将是屏幕左下角300像素和300像素。

如果您希望文字是屏幕左上角而不是左下角的特定像素数,请将代码更改为:

scoreText.pixelOffset = new Vector2 (300, Screen.height - 300);

或者,使用Canvas Text元素而不是GUIText。与GUIText不同,Text元素的Anchor是其屏幕偏移量。