
개인과제 기본기능을 구현하면서 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의 해상도에 맞게 잘 작동하는 것을 확인하였습니다.
'내일배움캠프 - TIL > 내일배움캠프 - TIL' 카테고리의 다른 글
| 내일배움캠프 20일차 - 유니티 입문 팀 프로젝트 회고 (5) | 2025.05.15 |
|---|---|
| 내일배움캠프 19일차 - 백준 1406번 C# (0) | 2025.05.08 |
| 내일배움캠프 17일차 - 백준 9012, 유니티 씬 별로 해상도 다른 이슈 (0) | 2025.05.02 |
| 내일배움캠프 16일차 - 백준 9093 (0) | 2025.05.01 |
| 내일배움캠프 15일차 - 백준 10828 팀 스크럼 (0) | 2025.04.30 |