728x90

0. 서문

뱀파이어 서바이벌 모작 제작 간, NullReferenceException 문제 발생.

 

1. Block Diagram

uArchtecture Block Diagram

2. 문제 원인

1) 초기 컴파일 동작 간, GameManager 내 ItemList 객체 초기화가 되어있지 않아 Null Pointer Error 발생 (Awake() 함수) 

2) 객체 Enable 시, GameManager가 관리하는 ItemList 정보를 가져오는 코드 존재 (OnEnable() 함수)

3. 해결 방안

1) 초기화 함수 생성

Level Up 동작 직전, GameManager의 객체를 참고하도록 추가적인 함수 구현.

허나, 이 방법의 경우 UI를 Enable하는 동작 이전에 추가적인 함수 호출이 필요해지는 단점 존재.

 

2) 컴파일 순서 변경

Null 공간을 참조하는 문제는 컴파일 순서를 변경하여, 객체 초기화 순서를 바꾸는 것으로 해결하고자 함.

'Script Execution Order'을 활용하여 문제를 해결할 수 있었다.

4. 적용 방법

1) Project Settings 실행

 

2) Script Execution Order 변경

GameManager 클래스를 추가하고, Default Time 이전에 우선적으로 실행되도록 순서를 변경.

 

5. 참고 자료

https://docs.unity3d.com/kr/530/Manual/ExecutionOrder.html

 

이벤트 함수 실행 순서(Execution Order of Event Functions) - Unity 매뉴얼

Unity 이벤트 함수는 사전에 정해진 순서대로 실행됩니다. 실행 순서는 다음과 같습니다.

docs.unity3d.com

https://docs.unity3d.com/kr/2019.4/Manual/class-MonoManager.html

 

스크립트 실행 순서 설정 - Unity 매뉴얼

Script Execution Order 설정을 사용하면 Unity가 다른 MonoBehaviour 클래스의 이벤트 함수를 호출하는 상대 순서를 지정할 수 있습니다. 예를 들어 Unity가 MoveForward MonoBehaviour 스크립트를 실행하기 전에 Rota

docs.unity3d.com

 


질문이나 지적 있으시면 댓글로 남겨주세요~

도움 되셨으면 하트 꾹!

+ Recent posts