이번 주차에는 스파르타 던전을 혼자서 한 번 만들어보고, 이걸 기반으로 발전시켜 다음 주차에 팀프로젝트를 진행할 예정이다.
목 차
플레이어 클래스
모든 개인 저장데이터는 결국 여기로 모여 Player 객체 하나만 저장하면 게임 전체가 저장이 될 것이다. 또한, 플레이어 참조를 통해서 플레이어에서 선언된 객체들끼리도 상호작용이 가능하다.
아이템 자료구조
내 게임에 있는 아이템 데이터가 어떤 구조로 되어있는지 설명한다.
아이템 클래스
아이템 객체를 생성하고 아이템이 속성을 보유하게 해주는 클래스이다. 여기에는 5개의 필드가 있는데, 다음과 같다:
public ItemType type { get; set; }
string itemName { get; set; }
int typeValue { get; set; }
int price { get; set; }
string explain { get; set; }
아이템리스트 클래스
이제 이 객체들을 아이템 종류에 따라 5개의 리스트에 나누어 저장했다. 각 리스트는 다음과 같다:
protected List<Item> weaponList { get; set; }
protected List<Item> chestplateList { get; set; }
protected List<Item> helmetList { get; set; }
protected List<Item> amuletList { get; set; }
protected List<Item> consumeList { get; set; }
추후 인벤토리 클래스와 상점 클래스에서 받아가기 위해서 다음과 같이 protected으로 받아와서 딱 자식클래스인 Inventory 클래스와 Shop 클래스에서 원할 때 가져다가 쓸 수 있게 했다. 원래 Inventory는 Shop을 거쳐 가져가야 하지만, 인벤토리 구현을 우선적으로 했기에 이렇게 연결했디가 후에 Inventory는 자식에서 빼거나 Shop의 자식으로 구현할 예정이다.
게임 저장
json 형식으로 플레이어의 데이터를 저장하는 법.
- VS Community > 프로젝트 > NuGet 패키지 관리 > Newtonsoft.Json 다운로드
- 저장할 파일 경로 지정
- string _playerJson = JsonConvert.SerializeObject(player, Formatting.Indented); //최초 실행시 json파일 생성.
- File.WriteAllText(playerPath, _playerJson); //저장(이미 데이터가 있다면 덮어쓰기)
- player = JsonConvert.DeserializeObject<Player>(_playerJson); //불러오기
지난 팀원인 영선님의 도움으로 알게 된 스파르타 Unity 내일배움캠프 선배님의 벨로그 글을 보고 배운 방법이다.
마무리
구현할게 많아 정신없는 하루였다. 내일 제출을 한다면 개인프로젝트에 대한 내용으로 TIL을 마무리하느라 눈이 돌아갈지도...
또 튜터님한테까지 찾아가도 해결되지 않던 오류가 있다. 콘솔창 이상으로 텍스트가 넘어가면 글씨가 .Clear로 지워지지 않는 현상이다. 이것 때문에 콘솔창 크기 자체를 바꾸려고 .SetWindowSize와 .SetBufferSize 모두 사용했지만, 둘 다 커서 위치만 이상해지고 해결은 되지 않았다. 내일까지 해결되지 않는다면 제출할 때에도 문의를 넣을 예정이다.
'내일배움캠프 > [P2-Solo.] SpartaDungeon' 카테고리의 다른 글
[TIL 24.04.26] 개인 프로젝트: 스파르타 던전(完) (0) | 2024.04.26 |
---|---|
[TIL 24.04.25] 개인 프로젝트: 스파르타 던전(2) (0) | 2024.04.25 |