Отображение имени объекта в Unity 5

Отображение имени объекта в Unity 5

Отображение имени объекта на экране в Unity 5

В этой статье я покажу вам один из вариантов реализации такой полезной штуки, как отображение имени объекта при наведении на него курсора или прицела.

Запустите игровой движок Unity 5 и создайте простую сцену и удалите со сцены Main Camera. Добавьте объект Plane и на нем разместите еще три объекта: Cube, Sphere и FPSController.

Размещение объектов

FPSController будет служить нам персонажем, которым мы будем управлять. Найти его можно в стандартной папке вашего проекта  Assets/ Standart Assets/ Characters/ FirstPersonCharacters/ Prefabs.

Создайте два С# скрипта и назовите их, к примеру, GUIName и Name.

Откройте скрипт GUIName и вставьте туда код который расположен ниже.

using UnityEngine;
using System.Collections;

public class GUIName : MonoBehaviour {
public Transform cam1; // Камера
RaycastHit rch1;// луч который будет выходить из камеры
public bool _showName; // переменная
void Update () {

 Vector3 Direction = cam1.TransformDirection(Vector3.forward); //
 if (Physics.Raycast(cam1.position, Direction, out rch1, 3)) //заставляет бить из нашей камеры луч на дистанцию равную 3
  {
   if (rch1.collider.GetComponent<Name>()) // и если этот луч встретился с коллайдером объекта на котором есть скрипт Name,
    {
      _showName = true; // то переменная становится равна true.
    }
  }
}
public void OnGUI()
  {
    if (_showName) // если переменная становится равна true
     {
      GUI.Label(new Rect((Screen.width) / 2, (Screen.height) / 2, 125, 25), " " + rch1.collider.GetComponent<Name>().nameGui); // то отображаем на экране персонажа, в указанном месте, значение nameGUI, которое берем из скрипта Name.
      }
   }
}

Затем откройте скрипт Name и добавте всего одну строчку

using UnityEngine;
using System.Collections;

public class Name : MonoBehaviour {

public string nameGui;

}

Перетащите скрипт GUIName на нашего персонажа и укажите в параметре Cam1 его камеру.

скрипт GUIName

На куб и сферу поместите скрипт Name и в поле nameGui напишите произвольные имена.

Скрипт Name

Запустите Игру и подойдите к любому из объектов, на экране должно отобразится то что вы написали в nameGUI.

Пример

Предыдущий урок          На Главную         Следующий урок

Обсудить на форуме


Оставить Комментарий