Графический интерфейс Unity не может отображать текст в нужном месте

#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 в центре.Я проверил их преобразование в редакторе, и они выровнены точно по центру спрайта. Как мне это исправить? Два белых спрайта должны отображать 3 в центре.Я проверил их преобразование в редакторе, и они выровнены точно по центру спрайта

Ответ №1:

X и y в прямоугольнике для метки — это верхняя левая позиция, которая выровнена по центру игровых объектов.

Чтобы выровнять их, вычтите половину ширины из x и половину высоты из y и убедитесь, что для стиля метки установлено выравнивание по «Среднему центру»