2023年7月29日

大人気アセットEasy Saveを使ってみました。

以下経緯とUVSでの使い方、困ったことなどです。

 

経緯

Unityのビジュアルスクリプティングではセーブ変数(Saved Variables)という便利な変数があり、数値や文字列などを簡単にセーブできます。私もすごく便利だなあと思って使っていました。

マニュアルによるとPlayerPrefsという機能で、いわゆるUnityの標準セーブとのことです。

便利ですが、Windows向けにゲームを作った場合、セーブデータがレジストリに保存されてしまうという事実を知りショックを受けました。レジストリへの書き込みはかなり抵抗があります。

こちらの記事では標準セーブの危険性とJSONについて紹介されています。実践は難しそうですが、おかげでJSONが何なのか私でも少し理解できました。

セーブ変数は便利ですし、なるべくこのまま使いたかったので困りました。Windows向けの制作の予定は今のところありませんが、後学のために解決策を見てみました。

結局アセットストアのEasy Saveを導入することが一番初心者向けの解法のようだったので、セールを見計らって購入しました。

 

Easy Save

セーブデータの保存場所の問題があっさり解決しました。Encryptionの項目から暗号化も簡単! すごい!

 

アセットをインポート後、プロジェクト設定 → ビジュアルスクリプティング → Type Optionsに「ES 3」を追加し、Regenerate Nodesボタンを押します。

これでES3のSaveとLoadのノードが出せました! ちゃんとセーブできているみたいです。

リストも問題なくセーブとロードできました。(上記グラフではFalseと返ってきました)

セーブしている変数の一覧が見えないことだけは不便に感じました。今まで使っていたビジュアルスクリプティング付属の変数は、一覧が見やすく、かなり初心者に使いやすい仕様だったのだと気づきました。今まで扱いが雑とか不遇とか散々言ってごめんなさい……。

Easy Saveでもセーブした変数の一覧を見る機能があるようですが、使い勝手が悪いとの記事を見かけ、それ以上は未確認です。

私にとっては今までの変数のほうが使い慣れているので、セーブしたいデータはアプリ変数に格納して、セーブとロードのときだけアプリ変数と同期させる方法が楽かなと思いました。いやそうでもないか……。

 

おわりに

EasySaveを入手したことで、Windows向けのゲーム作りに挑戦できるかもという自信が出てきました。WebGLでの制作で恩恵があるのかはまだ分かりません。

最近Instantiate?の使い方を知り、Unity初心者どころか入門さえしていなかったのではと気づかされている現状ですが、マイペースに進めたいと思います……。

 

2023/9追記:この記事を書いた当時は「セーブ変数にもリストを保存できる」と思い込んでいました。保存可能な型が限られていることを知り、今はEasy Saveの恩恵に与っています。

Categories: