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으로 선언되어 있지 않아도 된다.
편리한 만큼 약간의 성능저하가 있지만 신경쓸 정도는 아니라고 한다.