C# 유니티 함수를 활용한 오브젝트/컴포넌트 (비)활성화 방법(Enabling, Disabling, Activating Components)

728x90

<unity learn 발췌>

 

Enable() & Disable()함수를 활용한 컴포넌트 활성화

Enable/Disable함수는 오브젝트에 적용된 컴포넌트의 활성화 및 비활성화 여부를 설정하는 함수이다.

위 코드는 myLight에 Light 컴포넌트를 가져오고, enalbed을 적용하여 인스펙터 창에서 쉽게 켜고 끌 수 있는

토글 스위치처럼 만들었다.(bool 형식을 가져온 것)

 

그리고 Input.GetKeyUp(KeyCode.Space)를 적용하여, Space바를 눌러 Light 컴포넌트를 쉽게 활성화/비활성화 하도록 설정하였다.

<unity learn 발췌>

 

SetAcitve() 함수를 활용한 오브젝트 활성화

SetAcitve함수는 오브젝트의 활성화/비활성화 여부를 가져오는데 마찬가지로 bool 형식을 따른다.

Enabled/Disabled함수는 오브젝트에 적용된 컴포넌트 활성화 여부라면 SetActive는 오브젝트 그 자체의 활성화 여부를 판단한다는 것에서 차이점이 있다. 

<unity learn 발췌>

 

※활성화 여부를 체크하는 과정에서 주의할 점이 있는데 Debug.Log를 통해 콘솔 창의 결과값으로 확인해볼 수 있다.

부모-자식으로 계층화된 오브젝트에서 부모가 활성화되어 있지만 자식이 비활성화된 경우, 자식은 그대로 비활성화 될 것이다.

 

하지만 부모가 비활성화되고 자식은 활성화된 경우,

자식 오브젝트 역시 비활성화 된다.(부모의 활성화 여부를 따르게됨)

이 경우 부모의 비활성화에 따라 자식까지 인스펙터 창이 회색으로 변하지만 자식 오브젝트에 체크박스는 그대로 체크되어 있음(활성화 표시)을 주의하자.

 

유니티 실행 함수 속성 및 특징 비교

함수명 함수 속성
Awake 스크립트가 실행될 때 한번만 호출되는 함수다.
주로 게임의 상태 값 또는 변수의 초기화에 사용된다.
Start 함수가 호출되기 전에 맨 먼저 호출된다.
스크립트가 비활성화돼 있어도 실행된다.
코루틴 사용 불가
Start Update 함수가 호출되기 전에 한 번만 호출된다.
스크립트가 활성화돼 있어야 실행된다.
다른 스크립트의 모든 Awake가 모두 다 실행된 이후에 실행된다.
Update 프레임마다 호출되는 함수로 주로 게임의 핵심 로직을 작성한다.
스크립트가 활성화돼 있어야 실행된다.
LateUpdate 모든 Update 함수가 호출되고 나서 한 번씩 호출된다.
순차적으로 실행해야 하는 로직에 사용한다.
카메라 이동 로직에 주로 사용하는 함수다.
스크립트가 활성화돼 있어야 실행된다.
FixedUpdate 주로 물리엔진을 사용하는 경우에 시간 간격으로 힘을 가할 때 사용하는 함수다.
발생하는 주기가 일정하다.
OnEnable 게임오브젝트 또는 스크립트가 활성화됐을 호출된다.
이벤트 연결 시 사용한다.
코루틴 사용 불가
OnDisable 게임오브젝트 또는 스크립트가 비활성화됐을 때 호출된다.
이벤트 연결을 종료할 사용한다.
코루틴 사용 불가
OnGUI 레거시 GUI 관련 함수를 사용할 사용한다.
728x90