【问题标题】:GUI Text alignment with moving camera in Unity在 Unity 中与移动相机对齐的 GUI 文本
【发布时间】:2016-01-30 23:19:37
【问题描述】:

我正在 Unity 中制作一款自上而下的射击游戏。玩家可以在世界中移动,但摄像机会随着他移动,所以玩家总是在屏幕中间。

我试图在屏幕的左上角显示一些文本,因此我将一个 GUItext 组件附加到主摄像头。结果非常有趣——玩家将文本从屏幕上移开的那一刻。

文本应该显示的内容由播放器控制,因此我在播放器脚本中添加了以下 sn-ps 代码:

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

【问题讨论】:

  • 你的层次结构是什么样的?

标签: c# unity5 guitext


【解决方案1】:

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

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

【讨论】:

  • 我通过创建一个新的空对象来解决这个问题,其中除了转换(它永远不会移动)和一个 GUI 文本组件之外什么都没有。我现在遇到的问题是 GUI 文本上的锚点的工作方式非常奇怪——它只有在我把它放在左下角时才有效(而我希望它在左上角)。尝试更改锚点会将其移出屏幕的某个位置。
【解决方案2】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2014-09-29
    • 2017-08-10
    • 1970-01-01
    • 1970-01-01
    • 2014-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多