안녕하세요.
초보 개발자입니다.
유니티로 개발을 하다가 갑자기 게임 매니저가 통채로 사라져있는 경우가 있는데요, 제가 실수로 삭제한건지 아니면 간혹 이런 오류가 있는건지 궁금합니다.
그리고 이벤트에 오브젝트를 할당해두었는데 갑자기 None이 되어있거나 메서드를 할당해두었는데 No function이 되어있는 경우가 종종 보이는데 이건 왜 그런지 궁금합니다.
답변 부탁드려요
안녕하세요.
초보 개발자입니다.
유니티로 개발을 하다가 갑자기 게임 매니저가 통채로 사라져있는 경우가 있는데요, 제가 실수로 삭제한건지 아니면 간혹 이런 오류가 있는건지 궁금합니다.
그리고 이벤트에 오브젝트를 할당해두었는데 갑자기 None이 되어있거나 메서드를 할당해두었는데 No function이 되어있는 경우가 종종 보이는데 이건 왜 그런지 궁금합니다.
답변 부탁드려요
dontdestroyonload 되어 있는지 확인해보세요. 안되어있으면 씬이 내려가면 삭제됩니다.
그리고 이벤트는 UnityEvent 같이 직렬화해서 사용하시는 시나리오 같은데, 유니티 직렬화 시스템을 알아두시는게 개발하시는데 에러사항 많이 줄이실수 있을 것 같네요. 일단 하나의 시나리오는 직렬화 시스템의 문제로 인해 함수 이름, 변수 이름 등이 바뀌면 직렬화 되었던 것이 다 풀립니다. 그래서 FormerlySerializedAs 인가 Attribute 사용해서 미연에 방지할 수 있는 기능도 있습니다.
@Indie1(183.107) 직렬화가 아니라 event delegate 말씀하시는거면 람다 함수 사용했으면 클로져에서 데이터 가져갔을 떄 Reference로 가져가서 그 Reference 값을 잃어버렸을 수도 있는 등 이것도 시나리오가 다양해서 제일 좋은건 디버거 연결하시고 중단점 설정하고 스택, 메모리를 잘 보는 수 밖에 없습니다.
그런 버그가 있으면 유니티 안 쓰지 코드문제임
그런 크리티컬이슈는 대게 사용자문제임 위 댓글처럼 씬바뀌면서 참조오브젝트 날렸는지 체크해봐
유니티로 개발을 하다가 갑자기 게임 매니저가 통채로 사라져있는 경우 -> 소스코드가 사라진걸 의미하는거면 말이안됨 다른 외적인 이유가 있을것, 오브젝트가 사라지는 경우는 하이라키 수정 후 씬 저장(crtl+S)을 깜빡했을 확률이 높음 None이 되어있거나 메서드를 할당해두었는데 No function이 되어있는 경우 -> 윗댓에서 설명한대로 데이터타입, 변수명, 함수명, 클래스명 등이 수정되면 할당이 풀림 + 마찬가지로 컴포넌트 값 설정 후 씬 저장을 하지 않으면 설정한게 날라갈수 있음
다들 답변해주셔서 감사합니다!