2017-08-23 3 views
1

を使用する必要がありますか私は、ホーム画面に私のゲームを終了し、ゲームが同じ場所から続けてバック戻るとき、ユニティでモバイルパズルゲームを開発することだし、それは罰金のようです(onPause/onStartをオーバーライドしないで)、何か不足していますか?終了時に変数を保存する必要がありますか?人々は通常何を保存しますか?私は将来バグがあることを恐れている。は、私はonPause/ONSTART/onDestroy

+0

は、私はあなたがモバイルデバイスについて話していると仮定 - (。すなわちオープニング実行中のプロセスがそれを殺すために)あなたが実際にアプリケーションを閉じている、またはあなただけの、その後一時的に停止、それに戻っていることを確認していますか?あなたが実際にそれを閉じていない場合、アプリはメモリに常駐し、あなたが戻ったときにデータを失うことはありません。しかし、あなたが実際にアプリケーションを閉じると、それが他の場所に保存されていない限り、あなたが持っていたゲーム状態データを失うでしょう。 – Serlite

+0

「閉鎖」とは、電話に応答したり、新しいアプリを再生してから1時間後にアプリに戻ったりすることです。たとえば、iPhoneの場合、家に出るときに本当に誰もアプリを閉じません画面。 – SHAI

+0

その場合、アプリを実際に閉じているわけではありません。携帯電話ではメモリが残っているため、一時停止しています(ソフトウェアが使い果たされるまで、データが消去され、最近使用されたアプリ)。ただし、お使いの携帯電話をオフにすると実際に閉じます。アプリを停止して再起動した場合でもゲームの状態を保持することを目的としている場合は、データを静的ファイルに保存するコードを記述してから、ゲームの開始時にそのファイルをリロードする必要があります。また、限られたRAMでは、アイドル状態のアプリケーションを閉じてしまうため、パフォーマンスが低下することはありません。 – Serlite

答えて

2

私は何かが足りませんか?

はい

私は時に終了変数を格納する必要がありますか?

はい

私は将来的にバグを持っていることが怖いです。

はい、必要になります。あなたは失われた変数の問題にぶつかるでしょう。これを実装するのはあなたの責任です。すべてが見た目とうまく動作しているからといって今は何も意味しません。この動作はさまざまなプラットフォームやデバイスで異なり、バックグラウンドで現在実行されているアプリ数+現在の利用可能なラムによって異なります。通常は、クラスを使用してクラス内の重要な変数をすべて格納し、直列化して保存します。

は、これを実行する方法について説明し、簡単に保存して、任意のクラスをロードするためのラッパーを提供しthis記事を参照してください。 Unityが中断される直前にゲームの状態を保存する必要があります。これらは、これを検出するために使用することができる機能であり、約あなたが知っている必要があります:あなたは、データを保存するために使用するものを決定する必要があり

。場合によっては、各プラットフォームのそれぞれの動作のために複数のものを使用する必要があります。各プラットフォームでDocが何をしているかを理解するには、それぞれのDocを読む価値があります。

+0

私は、すべてのクラスをjsonファイルに保存する必要があることを理解しています。私が持っているクラスごとに異なるラッパーを作成する必要がありますか、または自動的にすべてをスキャンして復元できる、アセットストアから推薦できるツールがありますか?また、ゲームオブジェクトの設定(いくつかのスクリプトが添付されていないもの)は、アクティブなすべてのゲームオブジェクト(変換/その他の情報)を保存する最良の方法は何ですか? – SHAI

+0

いいえ。私が提供したラッパーは、C#genericを使用しています。つまり、クラスを変更せずに保存できます。あなたの質問の残りの部分については、私はたくさんの質問を受けます。シーンのすべてを保存しないでください。あなたが救う必要があるものを救いなさい。また、Transformは保存しません。そのトランスフォームの位置、回転、スケールを保持するシンプルなクラスを作成し、保存する必要があります。私はあなたが作成されるときにすべてのGameObjectが登録するSaveManagerスクリプトを作成することをお勧めします。後で保存できるように、各オブジェクトをSaveManagerのListに追加することができます。 – Programmer

+0

シーン内のすべてを保存しないとどういう意味ですか?私は保存しなければなりません:ゲーム中に追加された新しいゲームオブジェクト(クローン)と、開始時にシーンと共に来る人物(少なくともその情報)と、トランスフォームだけでなくオブジェクトを定義する他の情報も保存しなければなりません。私のクラスについては、今私はすべてのプライベート変数をSerializeFieldの権利に変更しなければならないと思いますか? – SHAI