Skip to content

一个可以轻松将原本由PlayerPrefs存储的数据同步到云端的插件。提供和PlayerPrefs一样的接口。兼容新老用户,将PlayerPrefs替换成OnlinePrefs,老用户数据不会丢失。

License

Notifications You must be signed in to change notification settings

feifeid47/Unity-OnlinePrefs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 

Repository files navigation

特点

(1)提供和PlayerPrefs一样的接口

(2)可以轻松的将原本由PlayerPrefs存储的数据同步到云端

(2)兼容新老用户,将PlayerPrefs替换成OnlinePrefs,老用户数据不会丢失

注意

OnlinePrefs依赖Newtonsoft.Json。(附Nuget地址:https://www.nuget.org/packages/Newtonsoft.Json)

如果不想引入该库,可以修改OnlinePrefs.cs文件中LoadAsync方法和Save方法中关于序列化和反序列化的实现。

如何使用

使用OnlinePrefs前,需要注册OnLoadRequest事件和OnSaveRequest(用来定义如何将数据存储到云端,如何从云端获取数据),并且执行LoadAsync方法同步云端数据。

完成这几个步骤就可以使用SetIntSetStringSetFloatGetIntGetStringGetFloat等方法。

以下是使用示例

private async void Awake()
{
    OnlinePrefs.OnLoadRequest += OnLoadRequest;
    OnlinePrefs.OnSaveRequest += OnSaveRequest;
    OnlinePrefs.OnValueChanged += OnValueChanged;
    // 初始化OnlinePrefs
    await OnlinePrefs.Initialize();

    OnlinePrefs.SetInt("XXX", 0);
    OnlinePrefs.SetString("XXX", "XXX");
    OnlinePrefs.SetFloat("XXX", 0);

    _ = OnlinePrefs.GetInt("XXX");
    _ = OnlinePrefs.GetString("XXX");
    _ = OnlinePrefs.GetFloat("XXX");
}

private Task<byte[]> OnLoadRequest()
{
    string userID = "XXX";
    var request = UnityWebRequest.Get($"http://localhost:9005/record/{userID}");
    var completionSource = new TaskCompletionSource<byte[]>();
    request.SendWebRequest().completed += _ =>
    {
        var data = request.result == UnityWebRequest.Result.Success ? request.downloadHandler.data : null;
        completionSource.SetResult(data);
        request.Dispose();
    };
    return completionSource.Task;
}

// 将数据保存到云端的示例实现
private void OnSaveRequest(byte[] data)
{
    string userID = "XXX";
    var request = UnityWebRequest.Post($"http://localhost:9005/record/{userID}", "POST");
    request.uploadHandler = new UploadHandlerRaw(data);
    request.SendWebRequest().completed += _ =>
    {
        request.Dispose();
    };
}

private void OnValueChanged()
{
    // 数据上传到云端
    OnlinePrefs.Save();
}

About

一个可以轻松将原本由PlayerPrefs存储的数据同步到云端的插件。提供和PlayerPrefs一样的接口。兼容新老用户,将PlayerPrefs替换成OnlinePrefs,老用户数据不会丢失。

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages