4

私はMonoAndroidへの変換に取り組んでいるC#開発者です。これらの変換は、電話がタイムアウトまたはブラックアウトし、ユーザーが再び画面に触れた場合を除いて、完全に機能します。ゲームは失われます。

これに対処する最も簡単な方法は何ですか?ライフサイクルと呼ばれることを聞いたことがありますが、実際の例で実装する方法、特にXNA変換で実装する方法の説明なしに、このサイクルの簡単な説明がたくさん見つかりました。

私の最初の解決策は、XNAゲームに「Pause」メソッドを設定し、Androidの「onPause」に対してそのメソッドを実行することです。ただし、タイムアウトや電話を自動的に処理する簡単なMono Android設定があると聞いているので、これを処理する簡単な方法があるかもしれません。

私が尋ねるのは..XnA変換を電話や画面のタイムアウトなどで実行し続けるにはどうすればよいですか?

4

1 に答える 1

1

MonoGameを使用しているのか、それとも Mono for Android に付属のAndroidGameViewを使用しているのかをお尋ねしてもよろしいですか?

AndroidGameView を使用している場合は、テクスチャ キューブのサンプルに従って、OnLoad() でテクスチャを手動でリロードするという規則に従うことをお勧めします。

MonoGame を使用している場合、 経由でテクスチャをロードするContentManager.Load<Texture2D>()と、リロードが自動的に処理されます。を使用してロードされたテクスチャは、イベントTexture2D.FromStreamで手動で再ロードする必要があります。GraphicsDevice.DeviceReset

Andrew Russell が指摘したように、ExEnには履歴書ごとにテクスチャをリロードする必要がないという利点があります。ただし、Android でのグラフィックス リソースの再読み込みをサポートすることは依然として必要です (または、少なくとも良い方法です)。多くのデバイスでは、ゲームはそれなしでは切り替えから正常に回復できません。ExEn は現在、テクスチャのリロードをサポートしていません。

Xamarin は現在、AndroidGameViewのバグ修正に取り組んでおり、デバイスがサポートしている場所で正しく再開できるようになります。リリースされると、これはモノゲームに流れます。

テクスチャやその他のグラフィック リソースのリロードを除けば、ライフ サイクルの処理はかなり簡単です。MonoGame は、完全な Windows Phone ライフ サイクル (つまり、廃棄と再水和) をまだ実装していませんが、私の経験では、必要ではありません。ゲーム内で再開するときに一時停止画面を表示するなどの目的でGame.Activatedおよびイベントを使用できます。Game.Deactivated

于 2013-01-11T16:05:43.847 に答える