我正在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文本上的锚点工作非常奇怪 - 只有当我把它放在左下方时才有效(我希望它在左上角)。试图更改锚点会将其移动到屏幕外的某个位置。这是我的层次结构:
答案 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是其屏幕偏移量。