複数の画面が必要なので、1) 複数のゲーム クラス (Microsoft.Xna.Framework.Game から継承され、異なるクラス名を持つ) を定義できますか? 2)そのような方法で作成する設計上の欠陥はありますか?
2 に答える
プログラムは、Game1
クラスを継承するクラスを初期化することから始まりますGame
。したがって、その自動コードを変更するのは良い考えではないと思います。
しかも、その名の通り。複数のGame
クラスがある場合、それは複数の「ゲーム」を実行していることを意味します。しかし、そうではありません。代わりに、単一の に複数の画面がありますGame
。
これらの画面を分離するには、異なるDrawableGameComponent
. また、実装できる独自のDraw
およびメソッドも含まれています。後で、これらすべてを のlistプロパティにUpdate
追加できます。DrawableGameComponent
Components
Game1
すべての複雑さはDrawableGameComponent
s に分散されます。それらのDraw
andUpdate
メソッドは、XNA によって自動的に呼び出されます。
これは役に立ちます。
これはいい方法だと思います。より良い提案は大歓迎です
これは Windows Phone 7 では不可能だと思います。プラットフォームは、インスタンスから派生したクラスを見つけることによって XNA ゲームを開始Game
します (自分でインスタンスを作成する Xbox や Windows とは異なります)。複数の派生クラスがあると失敗すると思います。(あなたはそれを試すことができます。)
次に、の問題がありGraphicsDevice
ます。WP7 でグラフィックス デバイスの 2 つのインスタンスをセットアップすることはできないと思われます。画面に書き込むことができるものをどのように変更しますか? これを行うための API については知りません。
また、2 つの別々のグラフィックス デバイスを持っていた場合、2 つの間でコンテンツを共有できませんでした。2 回ロードする必要があります - パフォーマンスの問題です。
Game
理論的には、1 つのを使用するために の2 つのインスタンスを設定できますGraphicsDevice
。ただし、それには、独自の の代替バージョンを作成する必要がありますGraphicsDeviceManager
。これは簡単な作業ではありません。さまざまな画面を処理する単純なステート マシンをセットアップするよりもはるかに困難です。
おそらく、それがどのように行われることになっているかの例については、Game State Managementのサンプルを確認してください。