セーブデータの保存場所変更について

330 views
Skip to first unread message

湿った春風

unread,
Apr 21, 2024, 1:13:54 PM4/21/24
to 宴ユーザーグループ

宴のバージョン: 宴3.12.8
UnityのバージョンとOS: Unity20213.6 windows10
Unityの習熟度:4年程度。FileIOについては初心者。

セーブデータの保存場所について質問です。
システムセーブを含めたセーブデータ保存場所を指定したいのですが、可能でしょうか?

希望保存場所は、ゲームのディレクトリ内、もしくは、Documents/ベンダー/ゲーム名/

セーブデータ保存場所を設定しているスクリプト名も教えていただきたいです。

よろしくお願いします。

マッドネスラボ

unread,
Apr 21, 2024, 6:02:40 PM4/21/24
to 宴ユーザーグループ

宴のファイル出力のルートパスは、
FileIOManager.SdkPersistentDataPathで定義されています。
Unityの定める「Application.persistentDataPath」以下の「Utage」というサブフォルダ以下になります。

ルートパスを変更することはできないので、フィアルパスを作成するメソッドのほうをoverrideしてください。

通常のセーブデータのソースコードは以下の通りです
Assets/Utage/Scripts/ADV/Save/AdvSaveManager.cs
必要に応じて以下のメソッドが呼ばれ、ファイルパスが決まります。
protected virtual string ToFilePath(string id)
{
return FilePathUtil.Combine(ToDirPath(),FileName + id);
}
protected virtual string ToDirPath()
{
return FilePathUtil.Combine(FileIOManager.SdkPersistentDataPath, DirectoryName + "/");
}


システムセーブデータのソースコードは以下の通りです
Assets/Utage/Scripts/ADV/Save/AdvSystemSaveData.cs
初期化時に以下のメソッドが呼ばれ、Pathが設定されます。

protected virtual bool TryReadSaveData()
{
if (DontUseSystemSaveData) return false;

string saveDir = FilePathUtil.Combine(FileIOManager.SdkPersistentDataPath, DirectoryName);
//セーブデータのディレクトリがなければ作成
FileIOManager.CreateDirectory(saveDir);

Path = FilePathUtil.Combine(saveDir, FileName);
if (!FileIOManager.Exists(Path)) return false;

return FileIOManager.ReadBinaryDecode(Path, ReadBinary);
}



上記のコンポーネントを継承したコンポーネントを作成して、各メソッドをoverrideしたものを定義し、
そのコンポーネントを、シーン内のAdvEngineオブジェクトの既存のコンポーネントとさしかえてください。

また、Unityエディタ上のメニューからセーブファイルを消すツールはルートパスで動作していますので、これは使えなくなります。




2024年4月22日月曜日 2:13:54 UTC+9 湿った春風:
Message has been deleted

湿った春風

unread,
Apr 21, 2024, 8:43:27 PM4/21/24
to 宴ユーザーグループ
ありがとうございました

2024年4月22日月曜日 7:02:40 UTC+9 マッドネスラボ:
Reply all
Reply to author
Forward
0 new messages