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문에서는 가급적 사용하지 말것
'🌍 Unity > 유니티 프로그래밍' 카테고리의 다른 글
Unity Script checkbox 유니티 스크립트 체크박스가 없을 때 (0) | 2019.05.23 |
---|---|
유니티 Touch로 카메라 회전 ( Unity Touch camera rotate ) (0) | 2019.02.03 |
유니티 오브젝트 바라보게 하기 (1) | 2019.01.07 |
유니티 로딩 화면 구현 ( Unity Loading system ) (0) | 2019.01.03 |
지연된 초기화 Lazy Initialization (0) | 2018.12.27 |