Unity C# > UnityEngine : GameObject & Component

Date:     Updated:

카테고리:

태그:

공부하면서 알게된 것만 정리합니다.😀

👩‍🦰 GameObject/Component

  • UnityEnine에 내장되어 있다.
  • 유니티의 모든 게임 오브젝트들은 동일하게 이 GameObject 타입이다.
    • 오브젝트는 컴포넌트들을 부품으로서 가진다 (Has-A)
    • 모든 오브젝트들은 Transform 컴포넌트를 가진다.
  • 반면에 컴포넌트들은 서로 각각 다양하고 다른 타입이다.
    • 모든 컴포넌트는 자신의 주인인 오브젝트에 접근할 수 있다.

🚀 변수/프로퍼티

✈ gameObject

  • 자기 자신(컴포넌트 or 스크립트)가 붙은 오브젝트를 뜻함.
    • GameObject gameObject = new GameObject()이 숨겨져 있다고 보면 된다.


✈ activeSelf

  • 오브젝트가 활성화 상태면 True 리턴, 아니면 False 리턴.


✈ layer

  • 게임 오브젝트의 레이어 (0 ~ 31)


✈ tag

  • 게임 오브젝트의 태그


✈ transform

  • 게임 오브젝트의 Transform 컴포넌트
  • 모든 게임 오브젝트는 Transform 을 가지므로 지원해주는듯 하다.


🚀 함수

  • 그냥 호출하면 👉 이 스크립트가 붙어 있는 오브젝트(나 자신)에 대해 함수 호출
    • GetCOmponent<Rigidbody>();
  • 다른 오브젝트로 호출하면 👉 그 오브젝트에 대해 함수 호출
    • obj.GetCOmponent<Rigidbody>();

✈ GetComponent

public Component GetComponent(Type type);

  • GetComponent<컴포넌트 이름>()
    • 두 가지 호출 방법
      • 그냥 GetComponent<컴포넌트 이름>()만 쓰면 이 스크립트가 붙어 있는 오브젝트(나 자신)에 붙어 있는 모든 컴포넌트들 중에서 해당 컴포넌트를 찾음
      • obj.GetComponent<컴포넌트 이름>() 처럼 어떤 게임 오브젝트에서 호출한거면 호출한 그 게임오브젝트의 컴포넌트들에서 찾는다.
    • 이 스크립트가 붙어 있는 오브젝트에 <>안에 적혀 있는 컴포넌트가 실존하여 오브젝트에 붙어 있는 상태라면 그 붙어 있는 컴포넌트를 리턴해준다.
    • 이 방법을 사용하면 슬롯 없이 그냥 코드에서 바로 해당 컴포넌트를 변수에 연결시킬 수 있다.
Rigidbody rb = GetComponent<Rigidbody>(); // 오브젝트가 Rigidbody 컴포넌트를 갖고 있다면 그 컴포넌트를 이제 rb 변수가 참조하게 된다.


✈ GetComponentInChildren

public Component GetComponentInChildren(Type type, bool includeInactive);

  • GetComponentInChildre<컴포넌트 이름>()
    • 내 자식 오브젝트들 중에서 <>안에 적혀 있는 컴포넌트가 실존하여 오브젝트에 붙어 있는 상태라면 그 붙어 있는 컴포넌트를 리턴해준다.


✈ GetComponentsInChildren

public Component[] GetComponentsInChildren(Type type, bool includeInactive = false);

  • 내 자식 오브젝트들 중에서 <>안에 적혀 있는 컴포넌트가 실존하여 오브젝트에 붙어 있는 상태라면 그 붙어 있는 컴포넌트들을 모두 모아 배열로 리턴해준다.
    • 손자의 증손자들까지 recursive하게 모~~~~~~든 자식들을 중에서 해당하는 컴포넌트를 찾는다.


✈ GetComponentInParent

public Component GetComponentInParent(Type type);

  • GetComponentInParent<컴포넌트 이름>()
    • 내 부모 오브젝트에 <>안에 적혀 있는 컴포넌트가 실존하여 오브젝트에 붙어 있는 상태라면 그 붙어 있는 컴포넌트를 리턴해준다.


✈ AddComponent

public Component AddComponent(string className);

  • AddComponent<추가할 컴포넌트 이름>()
    • 오브젝트이름.AddComponent<ScoreManager>()
      • ScoreManager라는 컴포넌트를 해당 오브젝트에 붙여준다.
      • ScoreManager라는 스크립트가 해당 오브젝트에 붙게 됨.
    • 오브젝트이름.AddComponent<Rigidbody>()
      • Rigidbody 컴포넌트가 해당 오브젝트가 붙게 됨.


✈ SetActive

public void SetActive(bool value);

변수가 참조하고 있는 오브젝트를 보이게끔 켜주는 함수. 체크가 해제 되어 보이지 않는 오브젝트를 SetActive(true) 해주면 안보이던 오브젝트가 다시 화면에 보이게 되고 반대로 SetActive(false) 해주면 더 이상 화면에 보이지 않게 된다.

  • 오브젝트 끌 때는 SetActive(false)
  • 컴포넌트나 스크립트를 끌 때는 enabled = false


✈ Find

public static GameObject Find(string name);

  • 클래스 함수라 GameObject.Find(string)으로 호출해야 한다.
  • 활성화 되어 있는 오브젝트들을 뒤져서 직접 <>안에 있는 이름(string)과 일치하는 오브젝트를 찾아 리턴해준다.
  • 오브젝트가 많다면 느리다.


✈ FindGameObjectWithTag

public static GameObject[] FindGameObjectsWithTag(string tag);

GameObject.FindGameObjectWithTag("Monster");

해당 태그가 붙은 오브젝트를 찾아서 리턴한다.


✈ CompareTag

public bool CompareTag(string tag);

if (t_hitInfo.transform.CompareTag("Monster"))
{

}

파라미터로 넘긴 태그와 이 함수를 호출한 오브젝트의 태그가 일치하면 True 리턴.



🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기

UnityDocs 카테고리 내 다른 글 보러가기

댓글 남기기