본문 바로가기

유니티 프로그래밍

유니티에서 게임오브젝트에 접근하는 가장 좋은 방법 (GameObject)

유니티에서는 객체를 하이어라키창에서 찾기 위해 

 

소스코드에 GameObject.Find("찾을 객체이름") 으로 사용하는 경우가 있지만

 

다들 알다시피 수많은 하이어라키창에서 찾아야 하고, 중복될 경우 문제가 발생할 여지가 있으며 속도가 느려서려서

 

권장되지 않는 방법이다.

 

그래서 게임오브젝트에 접근하는 가장 좋은 방법은

은하이어라키창에서 가장 상위의 그룹들은 public으로 변수 선언 후

유니티에서 드래그앤드랍을 해주고 그 밑의 객체들을 transform.Find로 찾는 방식이 제일 권장된다고 한다.

 

아래와 같은 예제처럼 사용하면 된다.

public class GameManager : MonoBehaviour
    {
        public Text _nowTimeText;

        public GameObject _world; // 최상위 객체그룹 중 한 개. 유니티에서 드래그앤드랍으로 갖고 온다.
        public GameObject _dishObj; // 그 밑의 자식 객체


        // Start is called before the first frame update
        void Start()
        {
            _dishObj = _world.transform.Find("Dish").gameObject;
        }
        public void OnClick_Food()
        {
            _dishObj.SetActive(true);
        }
    }