게임 설정 -> 인게임에 크게 영향을 받지 않는 곳에 활용됨
- 설정창
- 튜토리얼 완료 여부
중요한 정보 ❌-> 변동성이 심한 데이터는 적합하지 않음.
PlayerPrefs.SetInt("키", value);
PlayerPrefs.SetFloat("키", value);
PlayerPrefs.SetString("키", value);
PlayerPrefs.GetInt("키", value);
PlayerPrefs.GetFloat("키", value);
PlayerPrefs.GetString("키", value);
| 플랫폼 | 저장 위치 및 형식 |
|---|---|
| Windows | 레지스트리에 저장됩니다. 레지스트리 편집기에서 아래 경로를 확인하세요. HKEY_CURRENT_USER\Software\[CompanyName]\[ProductName] |
| macOS | plist 파일로 저장됩니다. Apple 공식 가이드에 따라 라이브러리 폴더를 확인하세요. ~/Library/Preferences/unity.[CompanyName].[ProductName].plist |
| Android | SharedPreferences 시스템을 사용하며 XML 파일로 저장됩니다. (루팅 필요) /data/data/[PackageName]/shared_prefs/[PackageName].xml |
| iOS | 앱의 Library/Preferences 폴더 내 .plist 파일에 저장됩니다. |
| Linux | config 파일로 저장됩니다. ~/.config/unity3d/[CompanyName]/[ProductName] |
Comma Separated Values
ID,HP,ATK
1,100,10
2,200,20
계층적 구조 -> 표현 불가능
Weapon
└─ Sword
└─ RareSword
Weapon,Sword,RareSword
Monster
└─ Skill
├─ Fire
├─ Ice
ID,Skill1,Skill2 ...
1,Fire,Ice
2,
객체 -> 텍스트로 바꿔 외부와 교환하는 방법
int level = 5;{
"gold": 500,
"items": ["sword", "potion"]
}👉🏻 이 문제들의 해결방법 중 하나가 Json
// Player.cs -> 게임 로직 담당
public class Player : MonoBehaviour
{
public int _level;
public int _gold;
public string _path;
public void Save()
{
string json = JsonUtility.ToJson(this);
File.WriteAllText(_path, json);
}
}
역할 분리
Player.cs
public class Player : MonoBehavior
{
public int _level;
public int _gold;
}
-> 게임 플레이만 담당
JsonHandler.cs
public static class JsonHandler
{
// 파일 변환
public static string ToJson(Data data)
{
return JsonUtility.ToJson(data);
}
// 파일 저장
public static void Save(string path, string json)
{
File.WriteAlltext(path, json);
}
}
JsonUtility는 Unity 저장 규칙 따름 (Inspector에 뜨냐/안 뜨냐)
특징
장점
한계점
사용처
설치:
Package Manager-Install package from git URL
->com.unity.nuget.newtonsoft-json
Newtonsoft Json은 Unity 규칙 무관 -> C# 객체를 직접 Json 바꿈
JsonUtility보다 기능이 훨씬 많고, 복잡한 Json 구조를 처리할 수 있다.
사용처
.asset 파일로 존재