반응형
Recent Posts
Recent Comments
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Real Vectorism. 훨씬 더 입체적으로...

로컬 프로퍼티를 JSON으로 관리하는 방법 본문

C# (based by Unity)

로컬 프로퍼티를 JSON으로 관리하는 방법

grast 2020. 3. 28. 14:09
반응형

티스토리는 C# 템플릿의 코드블럭이 없나......

 

1. JSON 을 사용하기 위한 클래스타입의 변수 구조 원형

[Serializable]
public class GameSettingProperties {
    [SerializeField]
    public bool UseEffect = true;
    
    [SerializeField]
    public int EffectVolume = 100;
    
    [SerializeField]
    public int MusicVolume = 100;
}

// 근데 저거 뭐라고 읽음? 서리얼? 씨리얼? 아 씨바 배고파

 

2. 읽기

[위에 있던거 클래스만 가지고오고 내용물은 다름]
public class GameSettingProperties {
    public void Read() {
        string jsonString = File.ReadAllText(Application.dataPath + "/preferences.json");
        GameSettingProperties properties = JsonUtility.FromJson<GameSettingProperties>(jsonString);
        
        // 이후는 properties를 적절히 어플리케이션에 맞게 알아서 커스터마이징
    }
}

 

3. 쓰기

[위에 있던거 클래스만 가지고오고 내용물은 다름]
public class GameSettingProperties {
    public void Write() {
        // 저장하기 이전에 모든 환경준비가 마쳐졌다는 가능이 전제
        
        string jsonString = JsonUtility.ToJson(this);
		File.WriteAllText(Application.persistentDataPath + "/preferences.json", jsonString);
    }
}

 

4. 문제

    > 파일이 존재하지 않을 경우 디폴트 값을 가지고있는 신규 파일을 기록해줘야하는 별도의 작업이 필요.

        이 경우에는 read를 try로 감싸서 catch될 경우 그냥 write를 실행하는 형식으로 처리가 가능하지만 더 효율적인 방법이 있는지는 모르겠음.

    > 안드로이드에서는 Application.dataPath가 사용불가능한 것으로 추정. Application.persistentDataPath 로 대체해서는 사용 가능. 이게 권장사양인지는 확인불가. (자바 하는것도 힘들어죽겠는데 씨샵까지 검색하기는 너무 귀찮음)

    > 개개인이 별도로 관리하는 게임프로퍼티 관리용이나 적절할 것 같지 게임의 스테이지디자인 정보같은 프로그램정보를 담아서 관리하는 방안으로는 절대 적절하지 않음. 직접 서버를 구축해서 REST API 통신규격으로 관리하는게 낫지...

반응형
Comments