将文本放在画布内

时间:2018-05-15 15:47:54

标签: c# unity3d text

我有一些文字,我想在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;
}

1 个答案:

答案 0 :(得分:1)

(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。)

相关问题