2011-08-05 15 views
0

大丈夫なので、基本的には、まっすぐなフィールドなどの地形を作ろうとしています。 テクスチャ幅の画面の幅が必要になります。私はgame1.csクラスで行ったようメインクラス(XNA)にない画面の幅/高さを取得する

int TextureHeight = graphics.PrefferedBackBufferWidth; 

が、私が「グラフィックス」プロパティを行うことができないです: は、私はそのようにそれを実行しようとしました。 私はこの1つを試みました: GraphicsDevice.Viewport.TitleSafeArea.X 私は何をすべきか分かりません。多分、画面の幅全体にそのテクスチャを描く別の方法がありますか? Btw私が言及した2つのグラフィックス方法の違いは何ですか?

ヘルパーに感謝します。

+0

説明については、[この回答](http://gamedev.stackexchange.com/questions/8687/how-to-find-the-window-size-in-xna/8694#8694)をご覧くださいあなたのオプションはレンダリングのためのスクリーンサイズを得るためのものです(通常は 'Viewport'が必要です)。 –

答えて

0

あなたはgraphicsDeviceが必要ですが、GraphicsDevicesやその他のものをたくさん作成するのは面倒です。だからあなたのゲームであなたが望むもの(画面の幅など)の価値を渡す本当に簡単な方法は、あなたが望む任意のクラスで使うことができる "GlobalVariable"を作成することです。ここでこの簡単なやり方を達成する方法があります。

ファーストは、新しいクラスを作成し、それはこのようGlobalClass呼び出す:

class GlobalClass 
{ 
} 

今すぐアクセスの公開方法でプライベート変数を追加します。ここでは、Screen HeightとWidthの2つの変数を作成します。

class GlobalClass 
{ 
    private static float screenWidth; 
    private static float screenHeight; 

    public static float ScreenWidth 
    { 
     get { return screenWidth; } 
     set { screenWidth = value; } 
    } 

    public static float ScreenHeight 
    { 
     get { return screenHeight; } 
     set { screenHeight = value; } 
    } 
} 

完了です!このクラスを使用すると、ゲームのどこにでも2つの変数を渡すことができます。だから、戻ってあなたの主要なクラス(game1.cs)へと更新Methodeのアップデートでは、このような画面の高さと画面の幅と論文変数の値を行く:

GlobalClass.ScreenWidth = graphics.PreferredBackBufferWidth; 
GlobalClass.ScreenHeight = graphics.PreferredBackBufferHeight; 

バックカスタムクラスにしてコードを置き換えますこれは

int TextureHeight = GlobalClass.ScreenWidth; 

どこでも好きな値を渡すことができます。ちょうどその値を使用する前に、GlobalClass.ScreenWidthを更新してください。

0

Game1クラスには、既に使用しているGraphicsDeviceの定義が含まれています。しかし、あなたが作成した他のクラスはそうではありません。 GraphicsDeviceクラスを他のクラスで使用する場合は、ほかの変数と同様に、それらのクラスに渡す必要があります。

関連する問題