본문 바로가기
Language/C#

SendMessage vs GetComponent

by W00gie 2020. 10. 12.

유니티 강의를 듣던 중 다른 스크립트의 함수를 호출할 때

SendMessage를 통한 접근과 GetComponent를 통한 두 가지 방법에 대해 배우게 되었다.

 

강의내에서 간략하게 'GetComponent' 보다 'SendMessage' 를 통한 호출방식이 연산속도가 더 느리다는 점은 알게되었으나 '왜 느린지', '다른 특징은 무엇이 있는지' 알아보게 되었다.

 

출처 answers.unity.com/questions/982211/is-sendmessage-or-getcomponent-faster.html

 

 

SendMessage 는 실행시 모든 모노 비헤이비어 템플릿에 포함된 함수에 대한 호출을 보내게된다고한다.

식별되는 모든 함수에 대해 제시된 매개변수의 String을 비교해 리턴값을 제시한다.

단순 호출이 아닌 추가적인 식별연산이 실행된다는 것이다.

 또한 프로젝트내에 동일한 이름의 Script가 중복되어 존재할 경우 두 개의 스크립트가 모두 호출된다고한다.

 

프로젝트 내에 동일한 이름의 스크립트 파일을 동시에 실행할 경우가 언제 존재할지 궁금하지만

SendMessage도 고유의 특징이 있음을 알게되었다.

프로젝트의 최적화를 위해선 SendMessage의 사용은 최대한 피하는것이 필요해보인다.

 

+Unity Docs에서도 SendMessage의 비사용을 적극 권장하고 있다.

 

'Language > C#' 카테고리의 다른 글

Awake, Start, Update, FixedUpdate  (0) 2020.10.04