[같은 게임오브젝트(GameObject)에서 컴포넌트(Component) 호출하기]

 

동일한 게임오브젝트가 갖고 있는 특정 다른 컴포넌트에 접근해야 할 경우 사용하는 방법은 다음과 같다.

이러한 선언은 Start()함수에서 또는 Awake()함수에서 미리 할당해놓아야 한다.

 

void Start() {

Transform tr = GetComponent<Transform>();

Transform tr = gameObject.GetComponent<Transform>();

Transform tr = (Transform)GetComponent("Transform");

Transform tr = (Transform)GetComponent(typeof(Transform));

}

 

이 스크립트가 포함된 게임오브젝트가 갖고 있는 컴포넌트 중에서 Transform 컴포넌트를 추출하여 tr 변수에 저장해라

 

 

[다른 게임오브젝트(GameObject)에 있는 컴포넌트(Component) 호출하기]

 

오브젝트들은 서로 독립적으로 작동하기때문에, 

위와같이 GetComponent만으로는 다은 오브젝트에 컴포넌트는 호출할 수 없다. 

이럴때는, 스크립트에 

 

public GameObject other;

 

와 같이 위에 선언해주고,

 

tr = other.GetComponent<Transform>();

 

이렇게하면, other의 게임오브젝트에 붙어있는 컴포넌트를 tr에 저장하여 사용할 수 있게된다.

 

아, 게임오브젝트는 유니티 에디터로 돌아와서, other가 어떤 게임오브젝트인지를 알려주어야한다.

즉, 이 스크립트가 붙어있는 게임오브젝트로 가면 Inspector에 스크립트 하단에 other가 보이고, 그 옆에 값은  None.

이 부분에다가 참조하고 싶은 게임오브젝트를 드래그 앤 드롭으로 옮겨주면 None대신 게임오브젝트가 들어간다.

이것이 연결된 것이라고 할 수 있다.

 

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 

또는 Tag를 이용한 방법도 있다.

 

Button button = GameObject.FindGameObjectWithTag("게임오브젝트이름").GetComponent<Button>();

 

이렇게하면, 게임오브젝트에 태그를 검색해서, 찾아온 뒤, Button 컴포넌트를 가져오게 된다.

 

https://www.10000duck.com/ducks/37

 

10000duck - 그레타 툰베리가 우리 도서관에 ?!

온라인 모금함을 통해 기부하세요.

www.10000duck.com

 

Posted by sungho88
,