2-7. 25조 천지창조

keubung·2024년 10월 2일
  • 팀 노션 작성
  • 9:30 ~ 10:30 팀 회의 진행(파트 분배 및 상황 파악)
  • 팀 프로젝트 진행

1. Player.cs에서 현재 어떤 퀘스트를 진행 중인지, 퀘스트 진행 상황이 어떤지에 대한 정보를 FileManager.cs와 주고 받을 수 있도록 하는 코드 추가

  • 다른 클래스에서 퀘스트에 대한 정보를 불러올 수 있도록 GetCurrentQuest함수 추가

    public Quest GetCurrentQuest()
    {
        return quest;
    }
  • 플레이어 정보를 로드하는 Load 함수에 questId를 받아올 수 있는 quest변수를 선언하고 퀘스트 진행 상황을 알 수 있도록 quest.questProgressAmount를 지정한다.

    quest = ObjectManager.Instance().GetQuest(playerInfo.questId);
    
    quest.questProgressAmount = playerInfo.questProgress;

2. Player.cs에서 INVEN.spam 파일에 인벤토리에 아이템을 저장하고 다시 불러오는 함수 작성

  • 인벤토리를 저장하는 파일 INVEN.spam 파일을 생성해서 각 아이템의 ID를 저장.

  • 아이템이 리스트 형태로 저장되기 때문에 foreach 사용 (저장할 데이터를 ","로 나눌 수 있도록 저장)

  • outData에 이어붙여둔 아이템 ID들을 한 번에 streamWriter를 통해 파일에 입력

    void SaveInven()
    {
        StreamWriter streamWriter = new StreamWriter(path + "\\INVEN.spam");
    
        string outData = string.Empty;
        foreach (Item item in inven)
        {
            outData += item.id + ",";
        }
    
        streamWriter.WriteLine(outData);
        streamWriter.Close();
    }
  • 파일에 저장된 인벤토리의 정보를 다시 가져오는 LoadInven 함수 작성

  • reader.ReadToEnd로 데이터를 읽어오고, ","를 기준으로 데이터를 나눔.

  • foreach문을 돌려 변수 data를 정수로 가져와 GetItem에 넣어주고 이를 Item의 item 변수에 저장

  • 각 데이터를 저장할 때마다 inven에 추가

    void LoadInven()
    {
        StreamReader reader = new StreamReader(path + "\\INVEN.spam");
        string outData = reader.ReadToEnd();
        string[] inData = outData.Split(",");
    
        foreach(string data in inData)
        {
            Item item = ObjectManager.Instance().GetItem(int.Parse(data));
            inven.Add(item);
        }
    }
profile
김나영(Unity_6기)

0개의 댓글