Попробуйте скрипт ниже. Он должен содержать некоторые лакомые кусочки, чтобы направить вас. Пара вещей, на которые следует обратить внимание: для этого сценария у вашего объекта должен быть коллайдер (не имеет значения, какой тип: 2D или 3D). Также этот скрипт отображает номер объекта только тогда, когда мышь находится над объектом. Я мог бы приспособить его, чтобы всегда показывать объект, но я должен заставить тебя немного поработать. Кроме того, я думаю, что в долгосрочной перспективе это прекрасно сработает для вас, поскольку вы можете анализировать это.
Я дам вам подсказку. В чем секрет рисования текста на месте объекта?
Вам необходимо преобразовать мировые пространственные координаты объекта в экранные координаты, а затем наложить текст.
Рассмотрим следующие кодовые блоки.
Эти методы определяют, находится ли mouseposition
на экране над объектом:
private void OnMouseEnter()
{
isVis = true;
}
private void OnMouseExit()
{
isVis = false;
}
Эти линии рисуют номер объекта в местоположении мыши:
Vector2 mospos = Input.mousePosition;
mospos.y = Screen.height - mospos.y;
if (isVis)
{
GUI.Box(new Rect(Input.mousePosition.x + 2, Screen.height -
Input.mousePosition.y + 2, 128, 72),"" + myNumber);
}
Полный класс ниже. Надеюсь, это поможет!
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LocalLabelingScript : MonoBehaviour {
Monster beast;
bool isVis = false;
int myNumber;
private void Awake()
{
myNumber = UnityEngine.Random.Range(0,100) + 1;
}
private void OnGUI()
{
Vector2 mospos = Input.mousePosition;
mospos.y = Screen.height - mospos.y;
if (isVis)
{
GUI.Box(new Rect(Input.mousePosition.x + 2, Screen.height -
Input.mousePosition.y + 2, 128, 72),"" + myNumber);
}
private void OnMouseEnter()
{
isVis = true;
}
private void OnMouseExit()
{
isVis = false;
}
}