テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

シーンをテキストとして保存・展開するSerializer

シーン自体をテキストから再現できるSerializerに感動したので紹介。

スクリーンショット 2012-10-22 23.23.17

Save Game-Unity Serializer
http://u3d.as/content/whydoidoit/save-game-unity-serializer/33x

■Unity Serializer

Unity Serializerは簡単に言えば、シーンのコンポーネントやオブジェクトの位置を保存・再現できるアセット。これだけならServletと同じだけど、Serializerは無料で使用出来る。(ただしライセンスが標準のライセンスじゃないので注意)

[Unity3D] シーンの状況を丸ごと保存するSaveIt
http://terasur.blog.fc2.com/blog-entry-212.html

■使い方

使い方は思ってたよりだいぶ簡単。

1.メニューの[Unity Serializer]>[Wizard]を選択して
  [Create a new Save Game Manager]を選択
2.状況を保存したいオブジェクトを選択して
  [Unity Serializer]>[Wizard]の[Store Infomation]をアタッチ
  インスタンスを増やす場合は、プレハブとして保存後に
  [Unity Serializer]>[Prefub Identifer]をアタッチ
  ※何故かUnityエディタを再起動しないとエラーが出る。不思議
3.TestSerializationを適当なオブジェクトに貼り付ける

これでSave時にオブジェクトの位置が保存されて、Load時に再現された。
また、LevelSerializer.SerializeLevel()メソッドでシーンの状況をテキスト形式で出力でき、LevelSerializer.LoadSavedLevelで保存したシーンを再現することができる。ただしSotreを登録していないオブジェクトやプレハブ以外で増減したオブジェクトがあるとエラーになってしまうので注意。
もう少しマシな使い方はTestSerializationを改造すれば良さ気。

■用途

ちょっと使ってみた感じ、色々と応用が効きそう。例えば…

・ポーズ時やアプリ終了時にシーンを保存してアプリが終了したときに再現
Apple Storeを介さずに単純なステージ追加。
・「Unity開発に関する50のTips」にあったテキスト形式のシーン保存も出来る?
 (※テキストは圧縮されちゃうので、マージは無理かも。設定で解除できる?)
・ルールを縛れば、ユーザー主導でステージを配布できるかも
・チェックポイントを設定してゲームオーバー時に巻き戻し

等々

[Unity3D]「Unity開発に関する50のTips」について
http://terasur.blog.fc2.com/blog-entry-232.html

今回は追加ステージを簡単に配布できないか模索する際に使ったけど、ゲームは初心者に優しくさんでも言われていた通り「初期化」等々の部分が少し面倒臭いかも。

セーブ機能を実現するAsset
http://gamesonytablet.blogspot.jp/2012/08/asset.html

これで無料はえごいな