LoginSignup
6
3

More than 3 years have passed since last update.

EasySaveのデータディレクトリ関連で詰まったこと

Last updated at Posted at 2019-08-02

この記事で言っていること

  • EasySaveの設定でSetting → Rantime Settings → DirectoryをDataPathにした場合、データディレクトリはexeファイルが置いてあるフォルダではなく、[ゲームフォルダまでのパス]/[ゲーム名]_Dataになる。
  • EasySaveのfilePathは絶対パスで指定される。(なので./hoge/save.es3みたいに書くとNotFoundって言われる)

はじめに

 UnityでゲームのデータをEasySaveで永久セーブしてPC向けにビルド後ロードする際、2つほどしくじりをしました。
この2つは原因が分かってしまえばくだらないことなんですが、備忘録的に残しておきます。

EasySaveのデータディレクトリ

 EasySaveには、データディレクトリを変更する機能があります。Window → Easy Save 3 → Setting → Rantime Settings → Directoryから変更できます。

 これはデフォルトだとpresidentDataPathになっているのですが、ゲームのフォルダと関係ない奥深くのフォルダを汚すのも気が憚られたため、DataPathに変更しました。

 私はてっきりexeファイル直下がデータディレクトリだと思い込み、そこにセーブフォルダを置いたのですが、本当は[ゲームフォルダまでのパス]/[ゲーム名]_Dataがデータディレクトリであり、この中にセーブフォルダを入れないと、当然ながら見つかりません。このせいでデータが見つからず時間を取られました。

filePathの指定

 EasySaveにはパスを指定してセーブ、ロードする機能があります。例えばこんな風に。

string filePath = "/save/savedata.es3";
var saveData = ES3.Load<int[,]>("sampleKey", filePath);

 このfilePathですが、絶対パスで指定され、更に上のようにDirectoryをDataPathにしている場合、カレントディレクトリは[ゲームフォルダまでのパス]/[ゲーム名]_Dataにいる扱いになり、filePathの最初に結合されます。

 これがどういうことかというと、filePathは本当は[ゲームフォルダまでのパス]/[ゲーム名]_Data/save/savedata.es3となっているわけです。なので、./save/savedata.es3みたいに相対パスで探そうとすると[ゲームフォルダまでのパス]/[ゲーム名]_Data/./save/savedata.es3となり、いざビルドして実行した際に強制終了してわけも分からず原因を探し回ることになります。

参考リンク

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3