Unity/기본 공부

유니티 컴포넌트 접근하기

이원혁 2022. 12. 1. 18:13
반응형

유니티를 다루다보면 A플레이어 객체에 1스크립트가 있고 B몬스터 객체에 2스크립트가 있을때 2스크립트에서 A객체 혹은 1 스크립트에 접근할 필요가 생깁니다. 예를 들자면 전에 포트리스 모작을 만들었는데 그때 포탄이 플레이어와 AI객체에 접근할 필요가 있었습니다.

player가 A객체와 A객체에 들어가있는 Ascript를 찾아보겠습니다.

1. 객체의 이름으로 찾기

GameObject.Find는 하이어라키창에 존재하는 "A"객체를 찾는 함수입니다. 찾아서 이름을 B로 변경하는 코드로

시작하기 이전 A였던 오브젝트의 이름이

게임을 시작하자 B로 변경되는 것을 볼 수 있습니다.

위의 코드는 A객체를 찾은 뒤 그 객체가 가지고있는 Ascript 컴포넌트를 가져와서 Ascript 안에 선언된 함수나 변수에 접근이 가능합니다.

 

2. 객체의 들어있는 스크립트로 찾기

Ascript를 가지고있는 객체의 이름을 디버깅하는 코드로

A객체를 찾고 있음을 알 수 있습니다.

 

3. 객체의 Tag로 찾기

Test태그를 만든 뒤 객체에 Test태그를 달아 주었습니다.

태그를 검색하는 스크립트를 작성한 뒤 동작시키면 

A객체를 정상적으로 찾고 있음을 알 수 있습니다.

 


더욱 다양한 사용방법

 

GameObject.Find("/A"); 로 검색하면 ->하이어라키창에서 최상위의 A를 찾습니다.

Tranform.Find("A"); 로 검색하게 되면 -> 자식 오브젝트 중에 A의 이름을 가진 것을 찾습니다.

 

주의사항은 Gameobject.Find로 찾을 경우 일일히 객체를 검사하기 때문에 Update에서 호출할경우 성능이 저하될 수 있습니다. 따라서 Start에서 찾아서 저장해놓고 사용하는것이 성능상 좋다고 생각합니다.

반응형