Unity

[Unity3D] 다른 오브젝트의 함수를 호출하는 방법들

bugwasd 2015. 11. 11. 00:58

Unity에서 다른 GameObject의 함수를 호출하기 위한 방법은 여러가지가 있지만 그중 대표적인 방법 3가지만 소개하겠다.

 

 

 

우선 호출할 함수는 public으로 선언되어 있어야 한다.

Player라는 GameObject에 PlayerScript라는 Component가 있고 Func라는 함수를 호출하고 싶다면 

 

1
GameObject.Find("Player").GetComponent<PlayerScript>().Func();
 

 

이 방법이 가장 기본적인 방법이다. 

Player라는 이름을 가진 GameObject를 찾아 PlayerScript라는 Component의 Func 함수를 호출하였다.

 

1
GameObject.FindWithTag("GM").GetComponent<GMScript>().Func();
 

 

GameManager와 같은 유일한 태그를 가지는(GM이라는 태그는 GameManager에서만 사용해야한다) GameObject를 찾을 때에는 FindWithTag를 사용하면 더욱 좋은 퍼포먼스를 낼 수 있다.

 

1
GameObject.FindWithTag("GM").SendMessage("Func");
 

 

마지막으로 SendMessage라는 함수를 문자열로 호출하는 방법이 있다. 

위와같이 호출할 함수를 GameObject에 메세지만 던져주면 알아서 해당 함수가 있는 Component를 찾아서 함수를 호출해준다.

이 방법으로 함수를 호출할때는 호출할 함수가 public으로 선언되어 있지 않아도 된다.

편리한 만큼 약간의 성능저하가 있지만 신경쓸 정도는 아니라고 한다.