안녕하십니까. 내 캐릭터가 움직이고 두 개 이상의 객체가 레이 캐스트의 필드에 들어올 때의 코드입니다. 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); 에는 고정 된 위치의 사각형이 있습니다. 그래서 모든 이름이 화면의 고정 된 위치에 표시됩니다. foreach (RaycastHit hit in objects) {...} 메소드의 각 game 객체에 대해 동적 값을 변경하십시오. –