2011-07-18 7 views
0

が悪いのかを理解していない - 私は、このチュートリアルの後の私のポンXNA/C#のコード

は私が私のゲームにスクリーンを追加するために第三の方法(多型)を使用し、そして今、私はエラーを取得しています。

それは私がこのコードをコメントアウトそれは

「をグラフィックスコンポーネントが見つからない」と言う -

 ////Vector2 ballPosition = new Vector2(GraphicsDevice.Viewport.TitleSafeArea.X + GraphicsDevice.Viewport.TitleSafeArea.Width/2, 
     //// GraphicsDevice.Viewport.TitleSafeArea.Y + GraphicsDevice.Viewport.TitleSafeArea.Height/2); 
     //ball.Initialize(Content.Load<Texture2D>("pongball2"), ballPosition); 


     ////Vector2 paddle1Position = new Vector2(GraphicsDevice.Viewport.TitleSafeArea.X + GraphicsDevice.Viewport.TitleSafeArea.Width/100 * 5, 
     //// GraphicsDevice.Viewport.TitleSafeArea.Y + GraphicsDevice.Viewport.TitleSafeArea.Height/2); 
     //paddle1.Initialize(Content.Load<Texture2D>("pongpaddle1"), paddle1Position); 

     ////Vector2 paddle2Position = new Vector2(GraphicsDevice.Viewport.TitleSafeArea.X + GraphicsDevice.Viewport.TitleSafeArea.Width/100 * 99, 
     //// GraphicsDevice.Viewport.TitleSafeArea.Y + GraphicsDevice.Viewport.TitleSafeArea.Height/2); 
     //paddle2.Initialize(Content.Load<Texture2D>("pongpaddle2"), paddle2Position); 


     //Score = Content.Load<SpriteFont>("score"); 

そして、それは動作しますが、その後、最初の画面の後に、それが次に進まないだろう。

ええ、私はここで困惑しています。

+0

これらのスクリーンショットを削除し、テキストコンテンツを質問に追加してください。ビンペーストと同じです。外部リンクが下がり、スクリーンショットや外部ページのテキストを簡単に検索できなくなり、あなたの質問にコードを貼り付けることができます。 –

+0

エラーメッセージが表示されたファイルに問題が限定されているかどうかわからないので、すべて貼り付けることができますか。それは悪い考えですが、何を貼り付けますか? – Slateboard

+0

問題を再現するためにわずか数行のコードを書き留めてください。新しいプロジェクトを開始し、最小限のコードを追加して、コンパイル時にエラーが発生している行を取得します。 –

答えて

2

the constructor for ContentManagerをご覧ください。 IServiceProviderパラメータが必要です。

コンテンツマネージャはサービスプロバイダを使用してIGraphicsDeviceServiceを取得します。このサービスは単にGraphicsDeviceオブジェクトを提供します。コンテンツマネージャは、前記デバイスにテクスチャをロードするためにグラフィックスデバイスを必要とする。 (IGraphicsDeviceServiceです)デフォルトGraphicsDeviceManagerあなたは(Gameから派生し)あなたゲームクラスのコンストラクタで、それを作成するときに(ISeviceProviderである)Game.Servicesに自身を登録することにより、

Game.Contentによって提供されるContentManagerは、同じ同じ(Game.Services)サービスプロバイダを利用します。したがって、LoadContentが呼び出されるまでに、サービスプロバイダにグラフィックスデバイスサービスを問い合わせることができ、そのグラフィックスデバイスサービスからグラフィックスデバイスを取得できます。

使用しているContentManagerがグラフィックスデバイス(または有効なグラフィックスデバイス)を取得できないため、例外が発生しています。

そして、この理由は、Gameクラスの悪い悪用です。これは、です。あなたは1つしか持っていないはずです。 ScreenクラスはGameから継承されています。それをしないでください!

関連する問題