了解しました。下記にサンプルを示します。
> ・その1-1 作っているゲームのセーブデータに好感度等の項目を作るパターン
> セーブロードのタイミングで宴のパラメーターに、それらのパラメーターを一つ一つ読み書きするようにプログラムします。
これに関してはシンプルに対象となるパラメーターのキーを指定して、SetParameterとGetParameterを使ってプログラムしてください。
> ・その1-2 作っているゲームのセーブデータに宴のパラメーター丸ごとのデータを読み書きするパターン
> 宴のパラメーター全体をバイナリ化して読み書きできるので、それを文字列にエンコードしてゲーム側のセーブデータに読み書きします
> (サンプルプログラムが必要ならご連絡ください。)
こちらに関しては、下記がサンプルになります。
扱いやすいように、バイナリ化したものを文字列にコンバートして扱っていますが、直接バイナリを扱うのであればコンバートの部分を省略するなどしてください。
public class SampleParamIO : MonoBehaviour
{
/// <summary>ADVエンジン</summary>
public AdvEngine Engine { get { return this.GetComponentCacheFindIfMissing( ref engine ); } }
[SerializeField]
protected AdvEngine engine;
//宴のパラメーターを文字列として書き出す
//第二引数を、AdvParamData.FileType.Systemにすると、System系のパラメーターを書き出す
public string WriteParam(AdvParamData.FileType fileType = AdvParamData.FileType.Default)
{
if (Engine.IsWaitBootLoading)
{
Debug.LogError("宴の起動処理が終わっていません");
}
//宴のパラメーターをバイナリ化
byte[] buffer = BinaryUtil.BinaryWrite((writer) => Engine.Param.Write(writer, fileType));
//バイナリを文字列化
string saveData = System.Convert.ToBase64String(buffer);
return saveData;
}
//文字列化したデータから、宴のパラメーターを読み込む
//第二引数を、AdvParamData.FileType.Systemにすると、System系のパラメーターに書き込む
public void ReadParam(string saveData, AdvParamData.FileType fileType = AdvParamData.FileType.Default)
{
if (Engine.IsWaitBootLoading)
{
Debug.LogError("宴の起動処理が終わっていません");
}
//文字列をバイナリ化
byte[] buffer = System.Convert.FromBase64String(saveData);
//バイナリから宴のパラメーターを読み込み
BinaryUtil.BinaryRead(buffer, (reader) => Engine.Param.Read(reader, fileType));
}
const string UtageSaveKey = "UtageSaveKey";
//Unity公式のPlayerPrefsを使ってパラメーターのみを書き込むサンプル
public void LoadSaveDataByPlayerPrefs()
{
PlayerPrefs.SetString(UtageSaveKey, WriteParam());
}
//Unity公式のPlayerPrefsを使ってパラメーターのみを読み込むサンプル
public void ReadSaveDataByPlayerPrefs()
{
var saveData = PlayerPrefs.GetString(UtageSaveKey);
if (string.IsNullOrEmpty(saveData))
{
//まだセーブされてない
return;
}
ReadParam(saveData);
}
}