[같은 게임오브젝트(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
'개발 > Unity & C#' 카테고리의 다른 글
[Unity] 인앱결제(In App Purchase) 오류 : 요청하신 항목은 구매할 수 없습니다. (0) | 2017.11.27 |
---|---|
[Unity] 맥에서 Unity에서 Delete 키 사용하기 (0) | 2017.11.19 |
[Unity] 유니티 C# 스크립트와 인스펙터의 적용 순서? (0) | 2017.10.31 |
[Unity] 유니티 C#에서 다른 스크립트 변수 사용하는 방법 (0) | 2017.10.31 |
[Unity] NGUI에서 패스워드 입력 별표(*) 표시하기 (0) | 2017.10.18 |