#c# #user-interface #unity3d #2d
#c# #пользовательский интерфейс #unity3d #2d
Вопрос:
У меня есть определенное количество спрайтов в моей сцене. Это 2D-игра. Я хочу отобразить некоторый текст на спрайте, к каждому игровому объекту спрайта прилагается скрипт. В скрипте у меня есть следующий метод 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 в центре.Я проверил их преобразование в редакторе, и они выровнены точно по центру спрайта. Как мне это исправить?
Ответ №1:
X и y в прямоугольнике для метки — это верхняя левая позиция, которая выровнена по центру игровых объектов.
Чтобы выровнять их, вычтите половину ширины из x и половину высоты из y и убедитесь, что для стиля метки установлено выравнивание по «Среднему центру»