0

我正在 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 文本上的锚点工作非常奇怪 - 只有当我把它放在左下角时它才有效(而我希望它在左上角)。尝试更改锚点会将其移出屏幕的某个位置。这是我的层次结构:在此处输入图像描述

4

2 回答 2

0

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

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

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

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

于 2016-01-30T15:19:37.490 回答
0

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

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

于 2016-01-29T02:13:38.990 回答