Unity

Unity - 씬 전환 시 파괴되지 않는 오브젝트

코샵 2023. 4. 3. 23:42
반응형
Unity에서는 씬(Scenes)을 사용하여 게임을 구성할 수 있습니다. 씬은 게임 화면의 일부분을 의미하며, 여러 개의 씬을 조합하여 게임을 만들 수 있습니다. 씬을 전환할 때, 기존에 로드되어 있던 오브젝트들은 파괴됩니다. 그러나, DontDestroyOnLoad 함수를 사용하여 특정 오브젝트를 파괴하지 않고 유지할 수 있습니다.

DontDestroyOnLoad 함수

DontDestroyOnLoad 함수는 특정 오브젝트를 씬 전환 시 파괴되지 않도록 합니다. 이 함수를 사용하면, 특정 오브젝트가 다른 씬에서도 유지될 수 있습니다.

using UnityEngine;

public class Example : MonoBehaviour
{
    void Awake()
    {
        DontDestroyOnLoad(gameObject);
    }
}

위 코드에서는 Awake 함수에서 DontDestroyOnLoad 함수를 호출하여 자신의 게임 오브젝트를 파괴하지 않도록 합니다. 이 코드를 사용하면, 이 스크립트가 적용된 게임 오브젝트는 다른 씬에서도 계속 유지됩니다.


주의사항

DontDestroyOnLoad 함수를 사용할 때에는 몇 가지 주의사항이 있습니다.

1. 중복 호출

DontDestroyOnLoad 함수는 한 번만 호출해야 합니다. 만약, 같은 게임 오브젝트에 대해 DontDestroyOnLoad 함수를 여러 번 호출하면, 예기치 않은 동작이 발생할 수 있습니다.

2. 다른 오브젝트와의 충돌

DontDestroyOnLoad 함수를 사용하여 유지되는 게임 오브젝트는 다른 씬에서도 계속해서 유지됩니다. 따라서, 같은 이름의 게임 오브젝트가 다른 씬에서도 존재할 경우, 예기치 않은 동작이 발생할 수 있습니다.


예제

다음은 DontDestroyOnLoad 함수를 사용하여 특정 오브젝트를 유지하는 예제 코드입니다.

using UnityEngine;

public class Example : MonoBehaviour
{
    void Awake()
    {
        DontDestroyOnLoad(gameObject);
    }
}

위 코드에서는 Awake 함수에서 DontDestroyOnLoad 함수를 호출하여 자신의 게임 오브젝트를 파괴하지 않도록 합니다. 이 코드를 사용하면, 이 스크립트가 적용된 게임 오브젝트는 다른 씬에서도 계속 유지됩니다.


결론

Unity에서 DontDestroyOnLoad 함수를 사용하여 씬 전환 시 파괴되지 않는 오브젝트를 유지할 수 있습니다. DontDestroyOnLoad 함수를 사용할 때에는 중복 호출과 다른 오브젝트와의 충돌에 주의해야 합니다. 이 함수를 사용하면, 게임 오브젝트를 다른 씬에서도 계속해서 사용할 수 있습니다.