본문 바로가기

내일배움캠프/[P2-Solo.] SpartaDungeon

[TIL 24.04.24] 개인 프로젝트: 스파르타 던전(1)

이번 주차에는 스파르타 던전을 혼자서 한 번 만들어보고, 이걸 기반으로 발전시켜 다음 주차에 팀프로젝트를 진행할 예정이다.

 

목   차

     


    플레이어 클래스

    모든 개인 저장데이터는 결국 여기로 모여 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 모두 사용했지만, 둘 다 커서 위치만 이상해지고 해결은 되지 않았다. 내일까지 해결되지 않는다면 제출할 때에도 문의를 넣을 예정이다.