TIL 25.05.06

조성원·2025년 5월 6일

로딩화면으로 쓸 씬을 만들었는데 이 로딩씬을 통해서 로비 -> 로딩화면 -> 미니게임 구조를 어떻게 완성할 수 있을까?

GameManager에서 Coroutin을 이용해 넘기는 방식을 사용했는데 이렇게 하면 씬이 변경될 때 오브젝트들이 사라지기 때문에 name이 뭔지 몰라서 돌연사할 수도 있다고 한다.

GameManager는 누른 버튼에 따라

문제

로딩 애니메이션을 랜덤으로 나오게 하는 작업을 하고 확인을 위해 실행시키자 "NullReferenceException: Object reference not set to an instance of an object" 라는 문구가 떴다.

작동 자체에는 문제가 없지만 LoadingAnimation을 작업하고 난 직후에 나온 문제이기 때문에 스크립트 혹은 인스펙터를 잘못 건드린 것 같다.

코드상에도 인스턴스나 오브젝트에 문제를 일으킬만한 부분은 없는 것 같다.
animator.runtimeAnimatorController.animationClips;는 인터넷에서 처음 보고 가져온 함수라서 미심쩍긴 하지만 저게 문제였다면 애니메이션 실행 자체가 불가능했을 것이다.

찾아본 원인 중 유력한 것은 유니티 에디터 내부의 노드 연결이 꼬인 상태, 즉 유니티 프로그램을 재실행하면 대부분 해결되는 일이었다.

이런 경우에도 마찬가지.

문제2

로딩화면에서 타이핑 효과를 넣고 확인을 위해 실행시키자 에러코드가 떴다.

NullReferenceException: Object reference not set to an instance of an object
LoadingText.Start () (at Assets/Script/Loading/LoadingText.cs:15)

위 문제와 똑같은 내용이지만 이번엔 명확한 원인이 뜬다.

string text = loadingText.text; 얘가 범인이다.
사실 시키는대로 했을 뿐이지만 어쨌든 범인이다

평소처럼 변수에 넣고 돌렸을 뿐인데 왜 배탈이 났을까.

에러코드는 string text를 가리키고 있으므로 정말 text 변수가 문제인지 확인해보기 위해서 간단한 디버그로그를 작성했다.

"시작"은 출력되지만 "끝"은 출력되지 않는다. text를 넣어서 출력해봤을 때도 text의 내용은 출력되지 않는다.

if (loadingText == null) Debug.Log("loadingText is Null");

해결 : loadingText 변수 선언만 해놓고 초기화하지 않았었다.

Start()에 "loadingText = GetComponent();" 붙여서 해결


profile
direction *= -1;

0개의 댓글