문의를 남기실 경우 다음 항목을 작성해 주시면 빠른 답변 처리에 도움이 됩니다.
- 프로젝트명 : 개인 프로젝트
- 뒤끝SDK 버전 : 5.4.5
- 에러 코드 :
MissingReferenceException: The object of type ‘GameObject’ 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.
LoginUI.b__23_1 () (at Assets/Scripts/UI/LogIn/LoginUI.cs:239)
Battlehub.Dispatcher.Dispatcher.Update () (at Assets/Battlehub/Dispatcher/Dispatcher.cs:75)
안녕학세요.
뒤끝 매치 예제 게임 [TheBackendMatch]을 똑같이 사용해서 로그인부터, 로비, 인게임 직전까지 구현하고 있는데요.
로그인씬-> 로비씬으로 전환한 뒤 바로 위의 에러가 뜹니다. 에러가 발생하는 곳은 LogInUI 스크립트의 아래 함수 부분입니다.
void ChangeLobbyScene()
{
if (fadeObject != null)
{
GameManager.GetInstance().ChangeState(GameManager.GameState.MatchLobby, (bool isDone) =>
{
// 에러가 나는 부분입니다.
Dispatcher.Current.BeginInvoke(() => loadingObject.transform.Rotate(0, 0, -10));
if (isDone)
{
fadeObject.ProcessFadeOut();
}
});
}
else
{
GameManager.GetInstance().ChangeState(GameManager.GameState.MatchLobby);
}
}
에러관련해서 디버깅 해보니, Dispatcher쪽은 문제가 없었고, loadingObject 로딩오브젝트를 여러번 정상적으로
디버깅 해주다가 갑자기 Null이 됩니다. 해당 오류를 계속 고쳐보다가 아래처럼 바꾸니 에러가 나지 않았습니다.
// loadingObject 의 로테이션 부븐을 빼니 문제가 해결됨.
Dispatcher.Current.BeginInvoke(() =>
{
if (isDone)
{
fadeObject.ProcessFadeOut();
}
});
loadingObject 를 정상적으로 가져오다가 에러가나는 문제여서 처음에는 로딩오브젝트는 정상적으로 인식하는 것 같고,
void Update()
{
loadingObject.transform.Rotate(0, 0, -10);
}
업데이트에서 해당 오브젝트를 똑같이 로테이션 시켰을때도 문제없이 작동했습니다.
loadingObject를 삭제하거나 하는 내용도 없는데 이런 에러가 나서 글 남기게 되었습니다.
GameManager.GetInstance().ChangeState(GameManager.GameState.MatchLobby, (bool isDone) =>
{
Dispatcher.Current.BeginInvoke(() => loadingObject.transform.Rotate(0, 0, -10));
질문 1. 위의 코드 내용이 “게임매니저에서 로비씬으로 바뀔떄까지 로딩오브젝트를 로테이션 시켜라” 가 맞나요?
질문 2. Dispatcher.Current.BeginInvoke(() => 여기서 로딩오브젝트의 로테이션 부분을 빼도 문제가 없을까요?
긴 글 읽어주셔서 정말 감사합니다.ㅠㅜ