
❗ 오늘의 할일
- 스위치, 아이템의 스크립터블 오브젝트를 저장하기
- 인벤토리 아이템을 저장하기
- 새로 시작했을 때 모든 값을 초기화하기
👀Scriptable Object를 저장하는 방법?
- 유니티에서는 자동으로 Scriptable Object를 저장해주지 않기 때문에, 다시 시작할때마다 값이 날아간다
- UnityEditor.EditorUtility.SetDirty(target) 함수를 사용해서 오브젝트 값을 저장할 수 있었다.

초기값이 false인 불린 값이 true로 남게 되었다.
참고한 사이트
http://www.devkorea.co.kr/reference/Documentation/ScriptReference/EditorUtility.SetDirty.html
setDirty의 사용방법
https://drehzr.tistory.com/277
Scriptable Object안에서 오브젝트를 생성하는 방법을 참고했다
🙄인벤토리 아이템은 어떻게 저장할까?
- 기존에 개발한 inventory 싱글톤 내부에 인벤토리 아이템들이 담긴 items 리스트를 저장해야 한다.
- 디스크에 값을 저장해주고, 그 값을 게임 시작시에 불러오는 게 좋을 것 같다
- json 파일에 GameData를 넣어 저장해주었다.
근데 왜 안되지?
- 알고보니, 리스트는 json에서 인식을 못한다고 한다.
- ToArray()를 이용해서 배열로 바꾸어 저장해주었다.
_gameData.inventory_items = Inventory.instance.items.ToArray();

예쁘게 잘 들어갔다
Json 데이터 저장을 위해 참고한 사이트
https://chameleonstudio.tistory.com/56
Json 데이터 저장을 간단하게 설명한 예시
https://jeahnote.tistory.com/150
json에서 리스트가 안된다는걸 알려준 사이트
🔔이제 마지막으로
- 새로 시작했을 때 모든 값을 초기화해주기만 하면 되는데 여기서 문제가 발생했다...
- Scriptable object 초기화하는 방법을 도무지 모르겠다..에러가 연달아서 나기 시작함😥
허무한 해결
- 알고보니까 Resources.Load를 사용하면서 막상 오브젝트들을 Resources 폴더에 넣어주지 않았었다;;
- 넣어주니까 바로 해결이 됐음ㅎㅎ
참고한 사이트
https://foxtrotin.tistory.com/114
아이템도 파괴하고, 이미 했던 행동들도 파괴해야해
- 열쇠로 문을 열었을 때, 그 사실이 저장되면서 다음에는 열려있어야 한다.
- 따라서 상호작용 후 열려야할 스위치가 이미모두 열려있다면, 실행이 됐던거! =>파괴
타이밍이 꼬이는 문제
- 앞서서 색별로 보이게 하는 함수의 방식을, 가장 처음에는 모두 보이게 한 다음 색깔 오브젝트의 개수를 파악하고, 그다음에 없애주는 방식으로 만들었다.
- 그런데, 아이템 파괴를 start에 넣어주면서, 색깔 파악이 되지않은 상태로 아이템들이 먼저 파괴되거나, 스크립터블 오브젝트의 리셋이 되기전에 파괴되어버리는 문제가 발생했다,
- 따라서, 비효율적이더라도.. gamemanager에 bool 변수를 넣고 colormanager에 의해 보이지 않게된 아이템들이 awake함수 안에서 bool 값을 확인하고, 그 값이 확인되면 파괴하거나말거나 함수를 실행하도록 했다.
✔ 토요일까지 해결해야할 버그들
- 의문의 세탁기, 화살표 콜리더 겹침 버그
- 부엌왼쪽찻장 문 열고 다시 로드하면 에러뜨는 버그