我的场景中有一定数量的精灵。这是一个2D游戏。我想在sprite上显示一些文本,每个Sprite的GameObject附加一个脚本。在脚本中,我有以下OnGUI()方法
void OnGUI ()
{
GUI.contentColor = Color.black;
Rect label = new Rect ();
label.x = worldToRect (transform.position).x;
label.y = worldToRect (transform.position).y;
label.width = 100;
label.height = 100;
GUI.Label (label, number.ToString ());
}
Vector2 worldToRect (Vector3 WorldPosition)
{
Vector2 v = Camera.main.WorldToScreenPoint (WorldPosition);
return GUIUtility.ScreenToGUIPoint (v);
}
但是这个位置并不完全正确。两个白色精灵应该在中心显示3个。我在编辑器中检查了它们的变换,它们精确地对准精灵的中心。我该如何纠正?
答案 0 :(得分:0)
标签的Rect中的x和y是左上角的位置,它与GameObjects的中心对齐。
要使它们居中,从x减去宽度的一半,从y减去一半的高度,并确保标签的样式将对齐设置为“中间中心”