Unityを使い始めた頃、PCへの負担が大きかったのかUnityのバグなのかはわかりませんが、たまにUnityが落ちることがありました。
もしその日の作業内容が全て消えてしまったら大変です。
そこで、今回はUnityが落ちても定期的に保存できる「AutoSave」を紹介します。
はじめに
今回紹介する「AutoSave」は「テラシュールブログ」のtsubaki様が作成してくださったものです。
テラシュールブログ様のサイトはこちらから
私自身新しいゲームを作るとなった時、まず最初にAutoSaveを導入するくらい愛用しています。ではまず、AutoSaveを導入するとどのような機能を実装できるのか紹介します。
AutoSaveとは
AutoSaveは名前の通り「自動でSceneを保存してくれる」ものです。
またシーンだけでなく「プレハブ」などのバックアップも保存することができるようです。
このスクリプトの最も便利な機能は「シーン再生時に保存」「指定した時間が経過したら保存」です。
この設定をすることで、予期せぬクラッシュでUnityのデータが消えてしまうような時でも勝手に保存してくれるので、その日の作業が全て無になったということもなくなります。
実装方法
AutoSaveをUnityに実装するのはとても簡単です。
https://gist.github.com/tsubaki/8709502
こちらのサイトから「AutoSave.cs」を保存してください。
zip形式で保存されるのですが、解凍すると「AutoSave.cs」と「SceneBackup.cs」というファイルがあるので、Assets > Editor に配置します。
Editorがない場合は新しく作成しておきましょう。
これだけで「AutoSave」の導入は完了しました。簡単ですね。
ですが、これだけだとまだセーブするタイミングなどが設定されていません。
以下から詳しい設定をしていきましょう。
Saveの設定
AutoSaveでできるセーブの設定は主に3つあります。
- プレハブなどを保存するかどうか
- シーンを保存するかどうか
- 保存するまでの時間
です。
では説明していきます。
保存の設定
まずUnity > Preferenceを開いてください。
以下のウィンドウが開くので「AutoSave」を選択します。
「auto save」という項目にチェックを入れることで、自動でセーブされるようになります。
先ほど説明した3項目を参考にチェックしてください。
「save scene interval」にチェックを入れると、指定した時間が経過するとセーブされるようになります。
300と書かれた箇所を変更することで、セーブのタイミングを変更することができます。
(300の場合は300秒)
また、「save scene」「save prehub」にチェックを入れている場合は、シーンを再生(ゲームを起動)したタイミングで保存されます。
さらにセーブされたタイミングで、Consoleに以下のように表示されるので、AutoSaveが機能しているか確認しましょう。
バックアップ・復元
File > Backup > Backup
を選択すると、現在のシーンをバックアップすることができるようです。
バックアップしたシーンは、プロジェクト名 > Backup > Assets > 保存したシーン先にあります。
File > Backup > Rollbackを選択することで、保存したバックアップから復元できるようです。
私はこの機能を使ったことがないので詳しいことはわかりませんが、重要な変更をする前などに一度バックアップしておくと安心かもしれませんね。
ただ幾つか注意点もあります。以下から説明していきます。
注意点
AutoSaveを使う上で注意する点が2箇所あります。
まず、シーンが存在しない時に保存を行おうとするとウィンドウが表示されます。
保存先がないので当然といえば当然ですが、シーンを作成しないようなテストゲームを作成している時でもシーンが必要になります。
もしウィンドウが表示されるのが嫌な場合は、先ほど説明したauto saveのチェックを外せばよいだけですね。
2つ目に「新しいプロジェクトを作成した時は、再度AutoSaveを導入する」という点です。
こちらは、新しいゲームを作る時に忘れてしまいがちですが、新規プロジェクトにした時は必ず再度AutoSaveを実装しましょう。
このように小さな注意点はありますが、普通に使っている分には大丈夫だと思います。
まとめ
簡単な実装で大きな恩恵を受けることができるので「Unityが落ちてデータが消えた!」や「いちいち保存するのが面倒くさい!」というような人はぜひ導入してみてください。
予期せぬデータの破損などを防ぐことができるので、結果的に作業効率アップにも繋がるかもしれませんね。
ではまた。