개발일지

[Unity] 옷입히기 프로토 개발일지 #4

Myong_ 2022. 8. 12. 16:35

 

뭔가 살짝 이상해보이기는 하는데 그래도 정상 작동하고 있음.

 

더보기
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;

public class Data_Manager : MonoBehaviour
{
    public Data nowData = new Data();
    private string Data_Path;
    private string Data_name;
    private bool Save_Delay = false;

    private void Awake()
    {
        //게임오브젝트가 다른 Scnen으로 전환되어도 파괴되지 않도록 함
        DontDestroyOnLoad(this.gameObject);

        //초기 자금값 설정
        nowData.Money = 5000;

        Data_Path = Application.persistentDataPath + "/";
        Data_name = "Player_Data";

        string PL_Data = File.ReadAllText(Data_Path + Data_name);
        nowData = JsonUtility.FromJson<Data>(PL_Data);
        Debug.Log("First " + PL_Data);
    }

    private void Update()
    {
        if (Save_Delay == false)
        {
            Save();
        }

        //정상 작동 확인용 임시 돈치트
        if (Input.GetKeyDown(KeyCode.E))
        {
            nowData.Money += 500;
        }
    }

    private void Save()
    {
        string PL_Data = JsonUtility.ToJson(nowData);
        File.WriteAllText(Data_Path + Data_name, PL_Data);

        Debug.Log(PL_Data);

        Save_Delay = true;
        Invoke("Save_Delay_ON", 3f);
    }

    private void Save_Delay_ON()
    {
        Save_Delay = false;
    }
}

 

 

github : https://github.com/H0NEYC0RN/personal-project-2

 

 

GitHub - H0NEYC0RN/personal-project-2: 옷입히기 게임 프로토타입

옷입히기 게임 프로토타입. Contribute to H0NEYC0RN/personal-project-2 development by creating an account on GitHub.

github.com

 

맨날 올리는거 까먹는 깃허브..🥲

 

 

 

0812 구현

- JSON 외부 경로로 저장

- 외부의 JSON 불러와서 데이터로 사용


 

어찌저찌 JSON 저장 / 불러오기 성공.. 했으나, 메모리 문제가 두두둥장.


JSON 저장 / 불러오기 자체는 성공했는데, 실시간으로 저장하는걸 구현하고 싶어서 짱구를 굴려보았다.

그러다가 문득! 그냥 이거 Update에 때려박으면 되는거 아닌가..? 하고 때려박았다가..

실행할때마다 유니티가 700mb 이상의 메모리를 먹으면서 뻗어버리는 현상이 발생했다..🤣

 

그래서 일단 임시방편으로 저장 주기를 3초 마다 한 번 으로 조정했다. 향후 메모리 문제가 계속 발생한다면 이 주기를 늘리거나, 혹은 다른 자동저장 방법을 찾아봐야 할 것 같다.

 

JSON 형식은 고사하고, class 형식의 데이터도 처음 써봐서 헷갈리는게 너무 많았고,

기본 개념이 잡혀져 있지 않는 상태에서 따라하기 게시글을 보니 하나도 이해가 가지 않고..

머리만 싸매면서 한참을 빙빙돌았던 것 같다..

 

근데 오늘까지는 JSON으로 머리아팠는데 이제는 실시간 타이머를 어떻게 구현할지를 고민해봐야겠다..

 

 

지금 당장 생각나는 계획은..

1. 탐사 버튼을 누른다.
2. 탐사 버튼을 누른 순간의 시간을 int 로 전환
3. 탐사 완료 시간 int = 탐사 시작 시간 int + 일정 시간 int
- 현재 시간보다 탐사 완료 시간이 커지는 순간 탐사 완료로 간주
4. 탐사 완료 처리

 

이렇게인데... 이제 이걸 어떻게 int로 변환하고, 어떻게 가져올건지를 고민해보고

안되면 또 다른 우회로를 찾아봐야겠다.. 요것만 해치우면 어쨌든간에 어려운 부분은 다 끝나간다!

 

아자자 파이팅!

 


 

 

참고자료

-

 

[유니티] Json으로 저장 불러오기 구현하기 1 - Unity Save And Load

해당 내용은 유튜브 영상으로도 보실 수 있습니다. 오늘 해볼 것은 Json을 활용해서 저장 불러오기를 슬롯방식으로 구현해 볼 것이다. Json이 기본적으로 사용되기 때문에, 만약 아직 유니티에서 J

coding-of-today.tistory.com

 

 

C# 파일 입출력 5 - Serialization (직렬화) 클래스, 구조체(복합 데이터) 형식 입출력을 위한

BinaryWriter, BinaryReader, StreamWriter, StreamReader은 기본 데이터 형식만 스트림에 쓰고 읽을 수 있습니다. 그래서 직렬화란 메커니즘을 제공하는데 직렬화는 객체의 필드에 저장된 값을 메모리에 저장

qzqz.tistory.com