이론(면접)

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);
    }
}

 

 

유니티

- 현재: 객체 지향 파괴되어있음

    회사에 들어가야 하므로.. 객체 지향을 지켜서 코드 작성 해야 함

 

센드 메시지

- 객체 지향 파괴된거 아님? 아님~ 유니티 팀에서 설계 방향을 객체 지향 파괴.