이론(면접)
SendMessage (ray)
가게주인
2022. 7. 1. 11:35
Sender와 Receiver가 존재.
각 오브젝트에 sender코드와 receiver 넣기.
센드 메시지
유니티 API 메시지 기반 명령어
다른 오브젝트에 있는 명령을 실행하거나 혹은 명령을 내릴 때 사용
또한 센드 메시지는 다른 오브젝트의 특정 명령만 실행하게 할 수 있다(코루틴 포함)
유니티 엔진 특성상 사용빈도가 높을 수 밖에 없다
컴포넌트 기반 프로그래밍
#region 센드 메시지
#endregion
public class CMessageSender : MonoBehaviour
{
[SerializeField, Range(0,10)]
public float rayDistance = 10.0f;
private
void Start()
{
ray = new Ray
{
origin = this.transform.position, direction = this.transform.forward
};
}
void Update()
{
SendMessageSample();
}
void SendMessageSample()
{
if(input.GetKeyDown(KetCode.Return))
{
rayHits = Physics.RaycastAll(ray, rayDistance);
for(int i=0; i<rayHits.Length; i++)
{
Debug.Log("센드 메시지 : " + rayHits[i].collider.gameObject.name);
rayHits[i]/collider.gameObject.SendMessage("ReceiveMessageSample",
"회전", SendMessageOptions.DontRequireReceiver);
}
}
}
private void OnDrawGizmose()
{
Gizmo.DrawLine(ray.origin, ray.origin + ray.direction * rayDistance);
}
}
public class CMessageReceiver : MonoBehaviour
{
void ReceiveMessageSample(string msg)
{
Debug.Log(this.gameObject.name + " : ReceivedMessage" + msg);
this.transform.Rotate(0,100,0);
}
}
유니티
- 현재: 객체 지향 파괴되어있음
회사에 들어가야 하므로.. 객체 지향을 지켜서 코드 작성 해야 함
센드 메시지
- 객체 지향 파괴된거 아님? 아님~ 유니티 팀에서 설계 방향을 객체 지향 파괴.