상황 세줄요약
1.몬스터 만들고 프리팹화 하는중으로, 몬스터 스크립트 안에 게임매니저 오브젝트를 참조하는 항목(Gmanager)을 만들고 그 안에 게임매니저를 드래그 앤 드롭했음.
public GameManager Gmanager;
(몬스터가 죽으면 게임매니저 스크립트 안의 킬카운트 변수에 +1을 하기 위함)
2.원본엔 잘 들어가고 겜 작동시에도 문제없음. 그런데 프리팹화만 하면 첨부한 게임매니저만 쏙 뱉어내고 프리팹화됨.
3.이런 시발..
프리팹화 하기 전의 인스펙터 상태.Gmanager 항목에 잘만 들어간다.
프리팹화 한 후의 인스펙터 상태. 첨부한 게임매니저는 어디가고 none처리된채로 프리팹화됐다..
유니티 독학중인 무지랭이에게 도움좀 주십쇼 선생님들
싱글톤 찾아볼것
아 게임매니저 싱글톤화 해서 갖다박아야 했나
새로 instantiate된 프리팹은 어디에 있는 gamemanager를 바라봐야하는지 모르는상태임
그래서 가장 간단하게 해결보는 싱글톤을 쓰는것
public gamemanager gmanager 같은 변수지정-첨부같은 과정 갖다버리고 싱글톤으로 참조시키라는 말 맞나요 일단 이렇게하니까 문제없긴한데
https://discussions.unity.com/t/prefabs-not-saving-reference-to-gameobject/934616
싱글톤쓴다는 가정하에는 인스펙터에 어싸인 할 필요가 없어지겠지. 걍 슬라임이라는 스크립트내 필요한 곳에서 코드로 호출하면 되니까. 그게 아니더라도 Awake같은 곳에서 게임 매니저를 파인드해서 변수에 넣어줘도 되고. - dc App
지금 저게 안되는 이유를 추측하자면 게임씬에 있는 게임 매니저를 어싸인해놨는데, 프리팹화 하는 순간 게임 매니저가 프리팹내에 존재하는게 아니니까 어디있는지 확인할 수가 없음. 이를테면 타이틀씬에서 저 프리팹을 실수로 생성한다고 생각해보셈. 인게임씬에 있는 게임매니저가 타이틀씬에도 있다고 보장할 수가 없음. - dc App
싱글톤으로 해결봤슴다 ㄳㄳ
프리팹 상태에선 자식오브젝트 말곤 다른 오브젝트에서 끌어온거 전부 날아감
프리팹화 되면 씬이랑은 완전히 분리되어 참조할 수 없다고 생각하면 됨