OnEnable과 OnDisable
Coddy Unity 여정의 Unity 스크립팅 기초 섹션에 포함된 레슨. 85개 중 72번째.
OnEnable()은 스크립트가 활성화될 때마다 실행됩니다. 오브젝트가 처음 나타날 때(Awake() 직후)와 SetActive(true)로 오브젝트를 표시하거나 enabled = true로 스크립트를 다시 켤 때마다 실행됩니다. OnDisable()은 오브젝트를 숨기거나 스크립트를 끄거나 오브젝트를 파괴할 때마다 실행됩니다.
다른 스크립트가 SetActive로 열고 닫는 포털은 자기 상태를 기록할 수 있습니다.
void OnEnable()
{
Debug.Log("Portal open");
}
void OnDisable()
{
Debug.Log("Portal closed");
}장면이 시작되면 포털은 Portal open을 기록합니다. 포털을 숨겼다가 다시 표시하면 Portal closed를 기록한 다음 Portal open을 기록하며, Awake()와 Start()는 두 번째로 실행되지 않습니다. 따라서 타이머 초기화나 방문 횟수 세기처럼 나타날 때마다 실행해야 하는 코드는 OnEnable()에 넣습니다. 포털이 숨겨져 있는 동안에는 포털의 Update()가 실행되지 않으므로, 다른 오브젝트에 있는 스크립트가 포털을 열고 닫습니다.
챌린지
중급각 Switchable이 켜지고 꺼질 때마다 이를 보고하도록 하세요.
int count;필드와void OnEnable()을 추가하세요.count에 1을 더한 다음name + " on (" + count + ")"를 로그에 기록하세요. 예:Bubble on (2).void OnDisable()을 추가해name + " off"를 로그에 기록하세요.
‘플레이’를 누르고 Space 키를 누르세요. Console에 Player on (1)이 표시된 다음, Bubble on (1)과 Bubble off가 표시됩니다. 그런 다음 ‘확인’을 누르세요.
직접 해보기
using UnityEngine;
public class Switchable : MonoBehaviour
{
public GameObject target;
void Update()
{
if (target != null && Input.GetKeyDown(KeyCode.Space))
{
target.SetActive(!target.activeSelf);
}
}
// 이 객체가 켜질 때마다: 횟수를 세고 "<name> on (<count>)"을 로그에 기록합니다
// 이 객체가 꺼질 때마다: "<name> off"를 로그에 기록합니다
}
Unity 스크립팅 기초의 모든 레슨
직접 연습해 보세요: Unity 플레이그라운드