【Unity】脱出ゲームのオートセーブの作り方

unity

Unityで脱出ゲームのオートセーブ機能を作ってみたので紹介します。

ScriptableObjectを使ってセーブする

脱出ゲームでセーブする対象は以下の通り。

  1. アイテムボックスのアイテム
  2. フィールドに存在するアイテム
  3. 移動した家具の位置

この3つを保存するためにScriptableObjectを使います。

ItemクラスとMovableObjクラスはシリアライズ可能な独自クラスです。(中身の詳細は省きます。)

作成したゲームデータは以下のように宣言することでスクリプト内で利用できるようになります。

アイテムボックスのアイテム

アイテムボックスにあるアイテムを取ってきて保存します。

フィールドに存在するアイテム

フィールド上のアイテムはSetActiveを使って表示、非表示を切り替えていますので、Bool型のactiveSelfを保存することでアイテムの状態を保存することができます。

対象となるGameObjectを上記のように宣言して、インスペクタから保存したいGameObjectをドラッグしてセットします。

保存するタイミングで以下を実行すれば、実行時点でのアイテムGameObjectのアクティブ状態(activeSelf)を保存できます。

取得前ならTrue,取得済みならFalseになっているはずです。

移動した家具の位置

ScriptableObjectはTransformを保存できません。

位置情報はVecter3、回転情報はQuaternionを使います。

【Serializable】を付けることで、カスタムクラスを保存することが可能になります。

保存する時は以下の通り。

こんな感じ。

おわり。

ABOUTこの記事をかいた人

のっくん

個人アプリ開発者。Python、Swift、Unityのことを発信します。月間2.5万PVブログ運営。 Twitter:@yamagablog