首页 > 解决方案 > 在画布内放置文本

问题描述

我想在 Canvas (Unity) 中渲染一些文本。

当我为我的游戏收集升级(例如“Power-up”)时,我的文字会出现。它呈现文本,但它始终位于屏幕的中心。那就是问题所在。它不会出现在升级的位置。

顺便说一句,画布设置为“屏幕空间 - 叠加”。文本在场景中间附近呈现。x 和 y 值很奇怪(几乎为零:x 是例如 -0.42,y 是 -0.79)。

字体参考:

public Font myFont;

生成文本的方法:

GameObject CreateText(Transform canvas_transform, float x, float y, string text_to_print, int font_size, Color text_color) {
    GameObject UItextGO = new GameObject("Text2");
    UItextGO.transform.SetParent(canvas_transform);

    RectTransform trans = UItextGO.AddComponent<RectTransform>();
    trans.anchoredPosition = new Vector2(x, y);

    Text text = UItextGO.AddComponent<Text>();
    text.text = text_to_print;
    text.fontSize = font_size;
    text.font = myFont;
    text.color = text_color;

    return UItextGO;
}

标签: c#unity3dtext

解决方案


(0,0)是屏幕的中间。canvas_transform您在此处 将文本设置为父级UItextGO.transform.SetParent(canvas_transform);

这意味着文本现在是对象的子对象,并且(0,0)是文本对象的父对象的原点。

而不是这个trans.anchoredPosition = new Vector2(x, y);,尝试这样的事情:(trans.transform.position = upgrade.transform.position;如果(x,y)位置肯定是升级位置。不需要upgrade.transform.position。)


推荐阅读