❗ 오늘의 할일

  1. 스위치, 아이템의 스크립터블 오브젝트를 저장하기
  2. 인벤토리 아이템을 저장하기
  3. 새로 시작했을 때 모든 값을 초기화하기

👀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 값을 확인하고, 그 값이 확인되면 파괴하거나말거나 함수를 실행하도록 했다.

✔ 토요일까지 해결해야할 버그들

  • 의문의 세탁기, 화살표 콜리더 겹침 버그
  • 부엌왼쪽찻장 문 열고 다시 로드하면 에러뜨는 버그
profile
일단 시작하기

0개의 댓글

Powered by GraphCDN, the GraphQL CDN