EasySaveアセットを使ってsprite保存したら思わぬ罠に引っかかった忘備録
どんな神ツールでも万能ではなかった。。
◆EasySaveってどんなツールなの?
おそらくUnityユーザーなら一度は聞いたことであろう、セーブデータ保存系アセットの決定版みたいなものです。
スクリプトに
ES3.Save<int>("key",5);
っていう一文を書くだけで値を保存できる、すぐれものです。
さらに設定画面で暗号化できる系統に切り替えできたり、componentにES3 AutoSave~スクリプトを追加するだけで、オートセーブが自動で実行できちゃうなど多岐に渡り、利用できたりします。
もちろん、intやstringなどといった変数以外にも、transformやstructで作成したデータも保存できてしまうすぐれものです。
(playerprefsはintやstringなどの変数のみしか保存できない)
◆やろうとしたこと
変数も保存できるってことはつまり、画像もこうやって保存できるってことだよねってことで、シーン1で画像を保存しておいて、シーン2に移行したときに読み込んだら、シーン引き継ぎするときに圧倒的に楽だよねってことで試してみたんです。
◆結局どうなったの
結論からいうと、ダメでした。
シーン1で保存した画像はシーン2では全く読み込みすらしなかったのです。
で、でもっ、公式マニュアルには画像も保存できますってかいてあったんだ
どういうことだってばよ!
ちなみにシーンを変えず、画像を保存して、読み込んだらうまくいきました。わけわかめだよ。。。
◆結局どういうことだったの
探し続けて小一時間、EasySaveというのは神アセットだから使ってねみたいな紹介はいっぱいあるのですが、トラブった事例や深く掘り下げた資料が公式ドキュメント以外にあまりなく、探すのに苦労しました。
EasySaveというのはEasySaveManagerというオブジェクトによって、制御されています。
このEasySaveManagerが参照するための画像を保管。読み込みをする際、紐付けされている画像をEasySaveManagerが引っ張り出し、読み込んでいるのです。
つまり、シーンをまたいで読み込む際、シーン先に画像参照がなかったため、読み込まれないものでした。
なるほどと思うと共に、
性能が高いとて決して完璧というわけではないことを思い知る一日でした。
この記事が気に入ったらサポートをしてみませんか?