[펌] 유니티 SendMessage 사용의 장점
다른 오브젝트의 함수를 써야할 때 메시지 호출방법을 쓰는 것이 좋다고 합니다.
이득우 님의 발표자료에 따르면, (아래 화면 참조)
- 메시지 호출은 클래스 간 의존성을 줄일 수 있고,
- 이는 코드를 간단하게 만들 수 있는데,
- 성능의 저하가 있다고 생각하지만 그렇게 느리지 않고 장점이 더 크니 적극적으로 쓰자.
유니티 레퍼런스 홈페이지 예제를 보면,
using UnityEngine;
using System.Collections;
public class Example : MonoBehaviour {
void ApplyDamage(float damage) {
print(damage);
}
void Example() {
SendMessage("ApplyDamage", 5.0F);
}
}
위와 같은 방식으로 사용하고 있습니다. 파라미터 중 마지막 SendMessageOptions 은 말 그대로 옵션인데, SendMessageOptions.DontRequireReceiver 라고 쓸 경우에는 호출한 함수가 제대로 호출되었는지 여부는 신경쓰지 않고 호출한 것으로 역할이 끝납니다.
C# 에서는 콜백의 기능을 위해 delegate 를 사용할 수도 있습니다. 이와 관련해서 아래의 링크를 참고하세요.
http://unityindepth.tistory.com/entry/유니티-개발자로써-내가-배웠던-최고의-5가지
[출처] http://unitygame.tistory.com/entry/%EC%9C%A0%EB%8B%88%ED%8B%B0-SendMessage-%EC%82%AC%EC%9A%A9
[첨부]
| 덧붙이자면 SendMessage 도 생각보다 느리지 않다고 알고있습니다. 실시간으로 리플랙션을 통해 함수를 호출하는것이 아니라 엔진에서 맵형태로 관리하기때문에 스트링 비교하는 부하정도만 있는걸로 알고있습니다. |
[출처] http://www.gamecodi.com/board/zboard.php?id=GAMECODI_Talkdev&no=2070
'Unity3D > Tips' 카테고리의 다른 글
[링크] Unity Technologies (0) | 2016.11.01 |
---|---|
[펌] 유니티 최적화 Tips (0) | 2016.10.26 |
[Tip] Coroutine Optimization Technique (0) | 2016.10.07 |
[펌] 에디터에서 게임 플레이를 할 때 저장되지 않은 Assets 저장하기 (0) | 2016.09.30 |
Latest Optimization Initiative for Unity Games (0) | 2016.09.18 |