오늘은 구현이 된 부분들을, 서로 조별로 발표하는 시간을 가졌다.
다양한 게임들이 구현이 되어있었고, 우선 들어가기 전에 다들 같은 주제를 가지고 다양한 연출을 해서 보는데 재밌었던 것 같다.
이제 다른 조들의 작업 내용을 보면서 추가적으로 나중에 공부 할 내용들을 정리 해 보았다. 크게 두가지로 나뉘지만, 여러가지 더 배운것들도 있다.
다른조들은 Scriptable Object를 사용하여 데이터 관리를 해 주었다. 직접 튜터님께 물어보고 확인 하니, Scriptable Object는 다음과 같은 특징을 가진다.
이것만 대충 놓고보면, Godot의 리소스 (.tres) 파일이 바로 생각난다. 즉 값들만 변경할때는 매우 유용하게 사용 될 내용이다.
지금 개인적으로 하고 있는 키오스크 작업중에서, 각각의 data를 (즉 스크립트만) Prefab으로 만들어줘 버튼에 추가시켜주는 방식을 사용하고 있는데, 지금 내용을 들으면 ScriptableObject가 훨씬 나은 선택지였을 것이다. (이미 프리팹 다 만들어서 늦었다.)
이러며 데이터 관리에 대해 이야기를 들어보았는데, JSON은 서버에서 관리 시 사용하는 것 같은 느낌으로 듣긴 하였다. 물론 JSON을 사용하다가, 한글이 다 터져버려서 JSON을 구체적으로 다루진 못하여 우선은 넘어간다.
하나의 조는 자동화를 사용하였다. 이것도 궁금해서 물어보니, 자동화의 범위가 너무 넓어서, 아직 이해가 되지는 않았지만, 귀찮은 프리팹을 생성해주는 작업들 등 을 처리 해 주는것 같다.
우선 이번 코드에서 표시된 내용으로는
다른 TIL을 참고해보니, SetDirty는 위에 설명한 ScriptableObject와 관련이 되어있다. Scriptable Object는 게임 종료 시 데이터가 날라간다. 그러면 데이터를 저장 해 주어야 하는데..
EditorUtility.SetDirty(Object target);
이 코드를 활용해서 디스크에 해당 target을 저장해준다. 물론 디스크에 저장되므로, 이제 이를 로드해주면 다음 실행 시 데이터가 저장되는것이다.
정확히는 DirtyFlag를 설정해줘서... 이라고 하는데, 지금 배우는 내용이 아니고, 복잡하니 다음 코드로 넘어간다.
이는 다큐먼트를 참고하였다. AssetDataBase를 사용하면, 에셋들을 "직접"관리한다.
어찌보면 위에 DirtyFlag로 지정한 데이터들을 저장 할 때 에셋으로 저장해 유용하게 사용 할 수 있게 된다. 우선 다큐먼트에서 보는 다음 메소드를 보자.
AssetDatabase.SaveAssetIfDirty(Object target);
이코드는, 이름에서 보다싶이, 만약 target이 더티하다면, 에셋으로 저장하라이다. 이로써 PlayerPref이 아닌 다른 방식으로 데이터 저장을 구현 한 것 같다.
오늘은 데이터 정리에 관련된 ScriptableObject와 그 데이터를 에셋으로 저장하는 방식을 추가적으로 배울 수 있었다.
다음시간은 다음주에 C#문법을 공부하는 것 같다.