반응형
게임을 만들다가, 적을 만들고 복사를 하는데 그 적이 죽어버리면(Destroy) 더 이상 복사를 하지 못했다.
복사할 객체가 사라져버렸기 때문이다.
그리고는 이런 에러 메세지를 남긴다.
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.
유니티 초보인 나는 이런 에러 메세지를 받아도 답을 찾기 힘들어한다.
마침 같이 운동하고 있는 친구 중, 유니티 개발자가 있어 이런 일이 있다고 했더니 프리팹(Prefab)에 대해 알아보라고 했다.
해당 단어로 원하는 결과를 찾지는 못했지만, 비슷한 기능을 만드는 유튜브를 따라서 보며 어떻게 하는지 알게 됐다.
위 이미지와 같이, 만든 객체를 Assets의 Prefab 폴더에 넣고. 그 객체를 생성하는 곳에 넣어준다.
이렇게 되면 생성된 객체를 삭제하더라도 Prefab 폴더에 있는 객체가 삭제되는게 아니기 때문에 에러가 나지 않는다.
좋은 사람을 만나면 이런 것도 좋구나 생각했다.
'C#' 카테고리의 다른 글
[C#] 코드 최적화 팁 및 요령 (0) | 2023.02.15 |
---|---|
[C#, Unity] C#으로 게임 개발하기 (0) | 2023.02.14 |
[C#] C#과 .NET framework 소개 (Introduction to C# and the .NET framework) (0) | 2023.02.12 |
[C#] 디자인 패턴 in C#: Singleton, Factory, and Observer Patterns (싱글톤, 팩토리, 옵저버 패턴) (0) | 2023.02.12 |
[C#, Unity] 캐릭터 움직임 (0) | 2023.02.05 |
댓글