質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

2927閲覧

Unity-オブジェクトの状態をセーブ/ロードする

退会済みユーザー

退会済みユーザー

総合スコア0

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

1クリップ

投稿2017/10/16 15:03

編集2017/10/17 09:21

3D空間上に多種のオブジェクトを配置し、建造物をつくるマインクラフトのようなゲームを製作しています。

作成した建造物をスロットにセーブし、いつでも呼び出して編集できるようにしたいのですが、オブジェクトの状態(種類と大きさ、配置など)をセーブ/ロードすることは可能でしょうか?

オブジェクトのセーブは必ずゲームについて回ると思うのですが、PlayerPrefsやEasySaveではGameObject型そのものはサポートしていないようです。
これはサポートされている型を駆使すれば結果的にGameObject型でもセーブができるということでしょうか?
例えば、素材となるオブジェクト達に番号を割り振り、建造物が完成したら使用した素材オブジェの"番号"と"Transform"をセーブし、ロード時には"番号"に対応する素材オブジェをセーブされた"Transform"の各数値をもとにそれぞれInstantiateする。
といった手順が必要なのでしょうか?

完全オフラインでも遊べるアプリにしようと思うので、セーブ場所はDBではなく端末で考えています。

恥ずかしながら本題についてどういった詳細を書くべきかもわからないのが現状です。
追記すべき点があれば指摘していただけると幸いです。
回答よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/10/17 09:21

回答ありがとうございます。もちろん下調べはある程度してきました。ただGameObject型のセーブとなるとヒットする情報がほとんどなく、そもそもGameObject型でセーブするという認識が間違えているのではないか?と思って質問させていただいた次第です。
sakura_hana

2017/10/18 04:24

最初からこのように書いて頂けると助かります(本当に何も調べず質問してくる方もいるので……)。既にBongoさんが回答されていますが、GameObject型そのものを保存する方法は無いです。例えばTransform.positionの値をテキストに変換して保存→ロード時にテキストからVector3に変換してTransform.positionに割り当て、というようなことを行う必要があります。
退会済みユーザー

退会済みユーザー

2017/10/19 05:42

申し訳ないです、できるだけ短文で済ませようと不要な配慮をしてしまいました。今後気を付けます。やはりGameObject型そのものはセーブできないんですね、Bongoさんの回答も参考にして考えてみます。回答ありがとうございましたm(__)m
guest

回答1

0

ベストアンサー

ご質問者さんのおっしゃる通り、「建築物オブジェクトから必要最小限のSerializableなデータだけからなる保存用オブジェクトを作る」機構と、「保存用オブジェクトから元の建築物オブジェクトを復元する」機構を作って、ローカルに保存するのは保存用オブジェクトの方、とするのが妥当かと思います。
過去のご質問から察するに、Texture2Dも一緒に保存したいところかと思いますが、これはImageConversionのメソッド、またはGetRawTextureDataLoadRawTextureDataでTexture2Dとバイト配列の相互変換を行うことで対応可能なように思います。

投稿2017/10/17 23:01

Bongo

総合スコア10807

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/10/19 06:18

回答ありがとうございます。 数多い素材オブジェにいちいち番号を割り当てるのは現実的じゃないと思ったのですが、GameObject型をセーブするには変換作業をはさむのが不可欠ということですね。 Texture2Dについてもありがとうございます、これも調べなければとおもっていました。参考にさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問