유니티(unity)

유니티(unity) Awake(), DontDestroyOnLoad()

JakeGD 2017. 12. 7. 02:06

Awake() 정의와 DontDestroyOnLoad() 사용법


Awake() 정의

  • Awake는 게임이 시작되기 전에, 모든 변수와 게임의 상태를 초기화하기 위해서 호출되며 스크립트 인스턴스가 종료될 때까지 한번만 호출됩니다. 

  • Awake는 모든 오브젝트가 초기화되고 호출되기 때문에, GameObject.FindWithTag를 이용해서 해당 게임 오브젝트를 요청하거나, 다른 오브젝트와 안전하게 연동해서 사용할 수 있습니다.


DontDestroyOnLoad() 사용법

  • 새로운 Scene이 로드될때 자동으로 파괴되지 않는 target 오브젝트를 만듭니다.
using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour { void Awake() { DontDestroyOnLoad(transform.gameObject); } }

이런식으로 지정된 이전 오브젝트가 그대로 살아서 다음 씬으로 넘어갑니다.

대신 지워지지않아 직접 지워줘야 합니다.


그런 경우 간단히 조건 제시후 Destroy 메소드를 이용해 삭제 합니다.


예) M키를 누를시 조건

 if (Input.GetKeyDown(KeyCode.M))

        {

            Destroy(gameObject);

        }