Привет, ниже код, когда мой персонаж перемещается, и два или более объекта попадают в поле зрения raycast, элемент GUI перекрывает их имя. Я пробовал много вариантов GUI, но не удалось, пожалуйста, скажите мне, что может быть правильным.Наложение текста GUI
using UnityEngine;
using System.Collections;
public class rayss : MonoBehaviour
{
FOV2DEyes eyes;
FOV2DVisionCone visionCone;
float speed = -5;
RaycastHit hit;
RaycastHit[] objects ;
void Start()
{
eyes = GetComponentInChildren<FOV2DEyes>();
visionCone = GetComponentInChildren<FOV2DVisionCone>();
}
void FixedUpdate()
{
if (transform.position.x < -10 || transform.position.x > 10)
{
speed *= -1;
}
transform.position = new Vector3(transform.position.x + speed * Time.fixedDeltaTime, transform.position.y, transform.position.z);
}
void Update()
{
objects = new RaycastHit[eyes.hits.Count];
int i = 0;
foreach (RaycastHit hit in eyes.hits)
{
if (hit.transform)
{
objects[i] =hit ;
i++;
}
}
}
void OnGUI()
{
foreach (RaycastHit hit in objects)
{
GUI.Label(new Rect(40, 25, 100, 40), hit.collider.gameObject.name);
}
}
}
Я бы порекомендовал вам отладить код и оценить значения переменных и посмотреть, что-то отличное от необычного. – MethodMan
Ваш GUI.Label (новый Rect (40, 25, 100, 40), hit.collider.gameObject.name); имеет фиксированный прямоугольник Rectangle. Итак, все имя отображается в этом фиксированном положении экрана. Попробуйте динамические значения там, которые будут изменяться для каждого игрового объекта в вашем foreach (RaycastHit hit in objects) {...}. –