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