Unity

[Unity] Coroutines이나 Invoke가 재실행 될 때 오브젝트가 delete됐다고 할 때 오류 해결 방법(삽질의 결과)

Guk-blog 2019. 4. 8. 16:53
728x90
반응형

The object of type 'Menu' has been destroyed but you are still trying to access it. Your script should either check if it is null or you should not destroy the object. 

라는 오류가 뜰 때 해결 방법

 

 

 

1. 스크립트가 파괴될 때 

private void OnDestroy()
    {
        StopAllCoroutines();
        CancelInvoke();
    }

를 해준다.

코루틴은 새로운 장면을 로드한 뒤에도 계속 실행됨

 

2. 그냥 귀찮을 때

while문이나 for문을 이용해도 문제 없을 때 반복문을 사용

 

 

3. 만약 나처럼 바보같이 두 개의 scene에서 같은 스크립트를 오브젝트에 붙여 사용했다면

 

같은 스크립트를 다수의 scene에 사용하는 경우(public없이 스크립트 자체만 사용할때)

한 scene에 붙은 오브젝트를 끄고

한 오브젝트 start()부분에

 DontDestroyOnLoad(this);

을 해두자...

하.... 개고생..

아마 Invoke()도 이렇게하면 해결 될 듯...

 

728x90
반응형