Unity

Inspector

gcreators 2024. 9. 12. 17:59

untiy에서 Inspector는 GameObject의 컴포넌트들을 모아놓은 집합체로

 

이를 추가, 제어 등을 하는 것으로 unity를 통한 게임이 동작되는 것이라고 이해하면 된다.

 

Chaser라는 GameObject를 추가하고

여기에 Chaser라는 스크립트를 추가하여 동작을 시켜볼려고 한다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

이 컴포넌트들중 Transform은 벡터(Vector) 를 활용하여 Position(위치), Rotation(회전),Scale(크기)를 제어할 수 있고

Script를 추가하여 이 여러 컴포넌트들을 제어 할 수 있다

 

//chaser.cs

using UnityEngine;
public class Chaser : MonoBehaviour //UnityEngine.MonoBehaviour
{
    //private Transform targetTr = null; //Transform 컴포넌트 - 얘도 클래스다.
    //private를 선언시 Inspector 에 표시 되지 않는다, protect도 마찬가지, public으로 선언해야 Inspector표시된다.
    //그러므로 컴포넌트에 나와있는 변수들은 모두 public으로 선언되어 있다. -> 외부에서 수정될 수 있게 만든 것

    [SerializeField]//private을 유지하며 Inspector 에 보여주는 것이 SerializeField 이다.
    private GameObject targetGo = null;//Hierarchy에 올라온 GameObject가 이 GameObject, GameObject도 클래스다.
    //[HideInInspector]  //public으로 쓰려고 만들었지만 HideInInspector를 쓰면 Inspector에 노출되지 않도록 하는 것
    public Transform targetTr = null;
    
    public Target target = null;
}

위의 인스펙터를 보면 알겠지만 script 컴포넌트 안에 target이란 게임오브젝트와 그 게임 오브젝트 내의 transform

그리고 target이란 스크립트를 지정 할 수 있는 것을 볼 수 있다. null로 초기화된 해당 변수들에 맞게

유니티 엔진 자체적으로 할당을 할 수 있도록 도와주는 옵션이라고 보면 된다.

 

Life - Cycle : 작성중(24.09.19)

    private void Awake() //맴버변수를 초기화를 할때 보통 Awake에서함, 그리고 내 맴버변수를 초기화 하는 것이니 다른 클래스에 영향이 거의 없다.
    {
        //GetComponent : 해당 게임오브젝트가 가지고 있는 컴포넌트 객체를 받아오는 것
        //종류가 많으니 템플릿으로 받아올 컴포넌트를 지정해줌
        //해당되는 컴포넌트가 없으면 값으로 null이 나옴
        targetTr = targetGo.GetComponent<Transform>();
        targetTr = target.transform; //모든 GameObject는 transform을 다 가지고 있어서 이렇게로도 가능은 하다.(기본적으론 GetComponent를 활용한다.)
        targetGo = targetTr.gameObject; //모든 transform은 GameObject를 알 수 있다. -> 즉, 모든 기능을 다 쓸 수 있다.

        target = targetGo.GetComponent<Target>();

        Debug.Log(gameObject.name + " Awake!");
    }
    
    private void OnEnable() //스크립트가 활성화 될때마다 실행
    {
        Debug.Log(gameObject.name + " OnEnable!");
    }
    private void OnDisable() //스크립트가 비활성화 될때마다 실행
    {
        Debug.Log(gameObject.name + " OnDisable!"); 
    }
    private void Start() //
    {
        Debug.Log(gameObject.name + " Start!");
    }

기본적으로 unity의 게임오브젝트는 생성과 소멸의 라이프 사이클 순서를 가지고 있는데

이는 추후 글에서 상세하게 설명 하겠습니다.
Awake - 스크립트가 활성화되기 전에 호출되며, 다른 컴포넌트와의 의존성이 덜한 초기화 작업에 주로 사용

OnEnable - 스크립트가 활성화가 될때마다 실행

Start - 스크립트가 활성화될 때 한 번 호출되는 초기화 메서드입니다. 주로 게임 오브젝트가 생성될 때 필요한 초기 설정을 할 때 사용 ex) 변수 초기화, 다른 컴포넌트 참조 설정 등

오브젝트를 활성화, 비활성화 할 수 있다.

오브젝트를 활성화 하고 비활성화 할때 이를 상속하는 컴포넌트 또한 같이 활성화 비활성화 되기에

스크립트 역시 활성화와 비활성화가 됨을 확인 할 수 있다.

'Unity' 카테고리의 다른 글

Transform(2) - position  (0) 2024.09.20
Transform(1) - 좌표  (0) 2024.09.20
충돌 처리(1) - AABB  (0) 2024.09.19
MonoBehaviour  (0) 2024.09.12
벡터(Vector)  (1) 2024.09.10