Unity - 사전합반 프로젝트 17

땡구의 개발일지·2025년 7월 8일

Unity마스터

목록 보기
61/78

발표와 관련하여 준비중


빌드 후 이미지 사라지는 문제

크게 2가지 문제로 보인다.
1. 디버그로그 문제 : 정확하지는 않은데, 디버그 로그가 있고 없고로 인해서 라이프 사이클의 타이밍이 변하는 것 같다. 안돌아가던 코드에 디버그를 찍기 위해서 로그를 넣었더니, 해결되는 경우가 있었다.
2. 초기화 문제 : 플레이어 컨트롤러 <-> HUD의 경우, 서로를 참조하는 모양새를 띄는데, 누가 먼저 Awake()가 되냐에 따라 에러가 발생한다. 에디터에서는 잘 돌아가던것이 빌드에서는 게임이 크래시 난다.

해결법

결국 크게 보자면 라이프 사이클의 문제다. 프로젝트 세팅에서 Script execution 순서를 정해주던지 스크립트로 초기화 순서를 정해준다
플레이어가 먼저 Awake()를 하도록 한다. 이를 위해 HUD 는 Awake를 삭제, 초기화에 필요한 기능은 Init으로 함수를 만든다.
플레이어 Awake()에서 먼저 HUD를 찾는다. FindObjectOfType() 메서드를 통해서 찾는다. hud에서 플레이어를 참조하기 위해 함수를 하나 준비한다.

private PlayerController player;

SetPlayer(PlayerController controller)
{
	player = controller;
}

이런식으로 외부에서 참조시킨다. 이후 플레이어에서 초기화 작업이 끝나면, hud의 Init 함수를 호출해서 초기화 작업을 해준다. 이러한 방법을 통해 초기화가 꼬이는 문제를 피할 수 있다.

profile
개발 박살내자

0개의 댓글