Real Vectorism. 훨씬 더 입체적으로...
로컬 프로퍼티를 JSON으로 관리하는 방법 본문
반응형
티스토리는 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 통신규격으로 관리하는게 낫지...
반응형
'C# (based by Unity)' 카테고리의 다른 글
존재하는 줄도 몰랐던 문법. LinQ (0) | 2020.07.03 |
---|---|
슈팅 패러다임 2 아케이드게임 Stage 01 플레이영상 (0) | 2020.06.07 |
Shooting Paradigm 2 Trial1 배포 (1) | 2020.05.24 |
익명함수 공부중 (0) | 2020.05.04 |
코루틴 어렵다 (0) | 2020.03.27 |
Comments