01
09


1. SendMessage


1
2
3
4
5
6
7
8
// 이름만 호출하기
public void SendMessage(string methodName);
// 인자 한개 같이 넘기기
public void SendMessage(string methodName, object value);
// 옵션 추가하기 (RequireReceiver / DontRequireReceiver)
public void SendMessage(string methodName, SendMessageOptions options);
// 인자 + 옵션
public void SendMessage(string methodName, object value, SendMessageOptions options);
cs


- 해당 오브젝트의 모든 컴포넌트에 'methodName'과 이름이 같은 함수를 찾아서 호출한다.

- 불리는 순서는 스크립트 자기 자신 -> 컴포넌트 위쪽부터 순서대로

- 두번째 위치에 인자를 넘겨줄 수도 있다.

- 옵션의 경우 리시버가 아무도 없었다면 에러를 콘솔에 표기하는지 여부. 디폴트는 표기함.



(예시)


1
2
3
4
5
6
7
void Test () {
    gameObject.SendMessage("CallTest"1);
}
 
void CallTest(int index) {
    Debug.Log ("index: " + index);
}
cs



2. SendMessageUpwards


- SendMessage와 동일하게 자신의 모든 컴포넌트에서 호출한 다음, 모든 부모에게서도 검색해서 호출한다.



3. BroadcastMessage


- SendMessage와 동일하게 자신의 모든 컴포넌트에서 호출한 다음, 모든 자손들까지 전부 검색해서 호출한다.







[ 주의점 ]

 - 비활성화 된 오브젝트에서는 호출되지 않음.

 - 이름으로 호출하다보니 오버로딩된 메소드를 정상적으로 사용하기 힘듦

 - 성능적으로 이슈가 있으니 Update문에서는 가급적 사용하지 말것


COMMENT