ecsimsw

Game object / Compoenets / Accessing /Tag 본문

Game object / Compoenets / Accessing /Tag

JinHwan Kim 2019. 1. 17. 05:04

Game Object

  • Game object is..
    - Game object는 캐릭터, 아이템, 광원, 카메라, 특수 효과 등 게임에 존재하는 모든 오브젝트이다. 하지만 게임 오브젝트 자체로는 컨테이너에 불과하고 기능을 위해선 관련 components를 추가해야한다.
  • Components
    - component는 오브젝트를 기능하게 하는 기본 구성 요소이다. 앞서 말했 듯 게임 오브젝트는 단순히 컴포넌트의 컨테이너이고 해당 객체의 기능이나 속성은 컴포넌트에 의해 추가된다.
  • Accessing _ same object
    - 우선 같은 게임 오브젝트의 컴포넌트를 엑세스하기 위해선 GetComponent 메소드를 사용해야한다.
    Rigidbody rb = GetComponent<Rigidbody>(); rb.mass=10f; rb.AddForce(Vector3.up * 10f);
     위 코드처럼 GetComponent로 엑세스한 컴포넌트를 통해 프로퍼티 값을 변경하거나 컴포넌트 인스턴스에서 함수를 호출할 수 있다.
  • Accessing _ other objects
    - 다른 게임 오브젝트의 컴포넌트를 엑세스하기 위해선 다음 세가지의 방법이 있다.
    1) 다른 게임 오브젝트를 변수로 하는 방법.
    2) 상속을 통해 엑세스를 간단히 하는 방법.
    3) 오브젝트의 이름이나 태그를 통해 검색하는 방법.
  • 1) Inspector로 다른 오브젝트를 변수로 저장
    - public GameObject 변수를 선언하여 다른 게임 오브젝트를 담는 것이다.
    public GameObject otherComponent;
     이후 hierarchy에서 원하는 객체를 inspector의 otherComponent 변수로 끌어당겨 대입하는 것으로 해당 객체의 컴포넌트를 자유롭게 사용할 수 있다.
  • 2) 계층 구조를 통해 엑세스를 간단히 하는 방법
    - 객체가 서로 연관이 깊어 엑세스를 지속적으로 해야할 때는 아예 부모-자식 오브젝트 관계를 두어 엑세스를 간단히 하는 것이 더 유리하다. Transform은 모든 오브젝트에 속하는 컴포넌트기 때문에 Transform을 이용하여 자식 오브젝트의 컴포넌트를 쉽게 검색할 수 있다.
    transform.GetChild(int index); transform.Find(string name);
     위 코드처럼 transform의 GetChild 메소드에 자식 오브젝트의 인덱스를 입력하거나 Find 메소드에 자식 오브젝트의 이름을 입력하는 것으로 자식 오브젝트를 검색할 수 있다.
  • 3) objectName, tagName으로 찾는 방법
    - 오브젝트의 이름이나 태그를 지정하여 Object를 Access 할 수 있다.
    GameObject A = GameObject.Find(string objectName); GameObject B = GameObject.FindWithTag(string tagName); GameObject[] C = GameObject.FindGameObjectsWithTag(string tagName);
      위 처럼 어느정도 식별할 정보가 있을 때 Find 메소드로 오브젝트 이름을 통해 검색하거나 FindWithTag, FindGameObjectsWithTag 메소드로 해당 태그를 갖은 오브젝트를 검색할 수 있다.

'Etc > Unity' 카테고리의 다른 글

Rigidbody / AddForce / AddTorque  (0) 2019.01.28
Accessing other gameobjects  (0) 2019.01.27
Rotate / Euler angle / Quaternion  (0) 2019.01.27
translate / position, Translate / Time.deltaTime  (0) 2019.01.26
Unity Screen Configuration  (0) 2019.01.16
Comments