新增 FlowScope Git 包雏形
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
using System;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using UnityEngine;
|
||||
|
||||
namespace FlowScope.Save
|
||||
{
|
||||
public sealed class PlayerPrefsSaveStorage : ISaveStorage
|
||||
{
|
||||
private const string Prefix = "FlowScope.Save.";
|
||||
|
||||
public Task WriteAsync(string key, byte[] data, CancellationToken cancellationToken)
|
||||
{
|
||||
cancellationToken.ThrowIfCancellationRequested();
|
||||
if (data == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(data));
|
||||
}
|
||||
|
||||
PlayerPrefs.SetString(ToPrefsKey(key), Convert.ToBase64String(data));
|
||||
PlayerPrefs.Save();
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
public Task<byte[]> ReadAsync(string key, CancellationToken cancellationToken)
|
||||
{
|
||||
cancellationToken.ThrowIfCancellationRequested();
|
||||
var prefsKey = ToPrefsKey(key);
|
||||
return Task.FromResult(PlayerPrefs.HasKey(prefsKey)
|
||||
? Convert.FromBase64String(PlayerPrefs.GetString(prefsKey))
|
||||
: null);
|
||||
}
|
||||
|
||||
public void Delete(string key)
|
||||
{
|
||||
PlayerPrefs.DeleteKey(ToPrefsKey(key));
|
||||
PlayerPrefs.Save();
|
||||
}
|
||||
|
||||
public bool Exists(string key)
|
||||
{
|
||||
return PlayerPrefs.HasKey(ToPrefsKey(key));
|
||||
}
|
||||
|
||||
private static string ToPrefsKey(string key)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(key))
|
||||
{
|
||||
throw new ArgumentException("Save key is required.", nameof(key));
|
||||
}
|
||||
|
||||
return Prefix + key;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user