flowchart LR
    Unity.Serialization{Unity.Serialization} --> W(Write) & R(Read) 
    click Unity.Serialization "https://docs.unity3d.com/Packages/com.unity.serialization@3.1/manual/index.html" _blank
    Data[("Data <br> Profile 0<br>.<br>.<br>.<br> Profile N <br> Dictionary<string,byte[]>")] --> |Default use profile 0| ChangeProfile(ChangeProfile) 
    Data --> |Save on Application pause or quit| SaveToFile(SaveToFile)--> Unity.Serialization
    Data --> |Load when startup| LoadFromFile(LoadFromFile)--> Unity.Serialization
    Data --> Get(Get<T>) & Set(Set<T>) & DeleteKey(DeleteKey) & HasKey(HasKey) & DeleteAll(DeleteAll)
    File{{File Data}} --- W & R
    - System data for game unity (Unity 2022.3)
- Using Unity.Serialization to serialize binary data
- Data allows you to store data in byte[] form in blocks called profiles. Each profile is a Dictionary with the key as a string and the value
for version 1.0.2
"com.wolf-org.game-data":"https://github.com/unity-package/game-data-unity.git#1.0.2",- Initialize data when loading the game: GameData.Init()Data will be init (Load Data) automatically when game starts
- Change Profile: GameData.ChangeProfile(int profile)
- Load Data: GameData.Load()Load all data from file for game
- Get Data: GameData.Get("KEY", valueDefault);Use similar to PlayerPrefs
- Set Data: GameData.Set("KEY", value);Use similar to PlayerPrefs
- Save Data: GameData.Save()Save data to file (You should save when pausing or quitting the game)
    private void OnApplicationPause(bool pauseStatus)
    {
        if(pauseStatus) GameData.Save();
    }- Has Key: GameData.HasKey(string key)To check if the profile has a key,
- DeleteKey: GameData.DeleteKey(string key)To delete the key from the profile
- DeleteAll: GameData.DeleteAll()To delete the entire key
- Backup: GameData.Backup()Get raw byte[] of all data of profile
- Restore: GameData.Restore(byte[] bytes)Load from byte[]