3D空間上に多種のオブジェクトを配置し、建造物をつくるマインクラフトのようなゲームを製作しています。
作成した建造物をスロットにセーブし、いつでも呼び出して編集できるようにしたいのですが、オブジェクトの状態(種類と大きさ、配置など)をセーブ/ロードすることは可能でしょうか?
オブジェクトのセーブは必ずゲームについて回ると思うのですが、PlayerPrefsやEasySaveではGameObject型そのものはサポートしていないようです。
これはサポートされている型を駆使すれば結果的にGameObject型でもセーブができるということでしょうか?
例えば、素材となるオブジェクト達に番号を割り振り、建造物が完成したら使用した素材オブジェの"番号"と"Transform"をセーブし、ロード時には"番号"に対応する素材オブジェをセーブされた"Transform"の各数値をもとにそれぞれInstantiateする。
といった手順が必要なのでしょうか?
完全オフラインでも遊べるアプリにしようと思うので、セーブ場所はDBではなく端末で考えています。
恥ずかしながら本題についてどういった詳細を書くべきかもわからないのが現状です。
追記すべき点があれば指摘していただけると幸いです。
回答よろしくお願いします。
https://teratail.com/help/question-tips まずはこのページをご覧ください。今回の場合、「unity セーブ」などで検索すればある程度情報が出て来るかと思います。
回答ありがとうございます。もちろん下調べはある程度してきました。ただGameObject型のセーブとなるとヒットする情報がほとんどなく、そもそもGameObject型でセーブするという認識が間違えているのではないか?と思って質問させていただいた次第です。
最初からこのように書いて頂けると助かります(本当に何も調べず質問してくる方もいるので……)。既にBongoさんが回答されていますが、GameObject型そのものを保存する方法は無いです。例えばTransform.positionの値をテキストに変換して保存→ロード時にテキストからVector3に変換してTransform.positionに割り当て、というようなことを行う必要があります。
申し訳ないです、できるだけ短文で済ませようと不要な配慮をしてしまいました。今後気を付けます。やはりGameObject型そのものはセーブできないんですね、Bongoさんの回答も参考にして考えてみます。回答ありがとうございましたm(__)m
回答1件
あなたの回答
tips
プレビュー