내일배움캠프 - TIL/내일배움캠프 - TIL

내일배움캠프 18일차 - 개인 과제(스파르타 메타버스 트러블 슈팅)

rudals4469 2025. 5. 7. 14:57

 

개인과제 기본기능을 구현하면서 2가지 정도의 트러블이 생겼습니다.

첫번째로는 MissingReferenceException 오류 구문이 출력되는 것과

두번째로는 씬 별로 해상도가 다른 이슈가 있었습니다.

트러블 슈팅 1

  • 배경
    • 메인 씬에서 미니게임 씬으로 진입하는 상황에서 발생하였습니다.
  • 발단
    • 미니게임 씬으로 진입하는 상황에 간혈적으로 아래와 같은 에러 메시지가 출력되었습니다.
    • MissingReferenceException: The object of type 'GameObject' has been destroyed but you are still trying to access it. 
    • 오류만 뜰 뿐 실제적으론 게임이 잘 진행되었습니다.
  • 전개
    • 문제를 해결하기 위해 먼저 오류를 해석해보니, GameObject가 이미 파괴되었지만 엑세스를 시도하고 있다는 의미였습니다.
    • 코드 형식을 보니 플레이어가 트리거에 들어오면 미니게임에 진입 할 수 있는 Popup 띄워주고 플레이어가 트리거에 나가면 Popup을 다시 없애는 형식으로 구현되어있었습니다.
  • 위기
    • 위의 문제를 다시 살펴보니 이미 미니게임씬으로 넘어가며 플레이어 오브젝트가 파괴되어 트리거에 나가졌기 때문에 SetActive(false) 즉, 엑세스를 할려고 하기 때문에 오류가 나왔다고 생각하였습니다.
    • 그래서 Popup UI가 Null이 아닐 때 없애는 식으로 예외처리를 해주었습니다.
  • 결말
    • Popup UI가 사라지는 코드에 예외처리를 해준 뒤 오류는 사라졌습니다.
    • 허나 매번 오류구문이 뜨지않고 간혈적으로 뜬거에 대한 정확한 해답을 찾지 못하였습니다.
    • 단지 추측하는 것은 어쩔때는 씬이 넘어가기 전에 플레이어가 트리거에서 나와지는 판정이라 Popup이 꺼지고 씬이 넘어가고 오류가 뜰 때는 순서가 바뀌었지 않나라고 생각합니다.
    •  

트러블 슈팅 2

  • 배경
    • 메인씬과 미니게임씬 별로 해상도가 다른 이슈가 있었습니다.
  • 발단
    • 따로 오류 메시지는 출력되지 않았지만 유니티 인게임씬에서 테스트 결과 UI와 게임 오브젝트들이 카메라에 잡히지 않는 현상이 발생하였습니다.
  • 전개
    • 이 문제를 해결하기 위해 구글링을 하여 스크립트 상에서 해상도를 바꾸어주는 코드를 추가하여 실행하였지만 그대로였습니다.
    • 위의 해상도를 바꿔주는 것은 빌드를 했을 때만 변경된다는 사실에 빌드를 하여 테스트 했을 때도 제가 원하는 해상도로 바뀌진 않았습니다.
    • 이런 저런 작업들을 해보고 원하는 답이 없어, 튜터님께 질문을 해본 결과 게임안에서 해상도가 바뀌는 로직을 좋지 않다라고 말씀해주셨습니다. (추후에 만들어볼 게임이 해상도가 바뀌는 로직을 사용할 예정이라 공부할 겸 써보았습니다.)
    • 또한 굳이 다른 해상도를 쓸려면 UI 정도는 앵커를 사용하여 해상도가 바뀌어도 유지될 수 있다고 하셨습니다.
  • 위기, 절정
    • 튜터님께 말씀을 듣고 16 : 9의 해상도에 맞게 미니 게임의 UI와 게임 오브젝트들의 위치를 수정하였습니다.
  • 결말
    • 수정 작업을 마친 후 테스트 결과 미니게임은 16:9의 해상도에 맞게 잘 작동하는 것을 확인하였습니다.