技術をかじる猫

適当に気になった技術や言語、思ったこと考えた事など。

XNA調べてる

画面の初期化

GraphicsDevice#Clear メソッドでバックバッファを単色初期化できる模様。
ダブルバッファリングそのものはXNAで持ってる。便利な世の中だ。

画面サイズ全画面

初期化時点でフルスクリーンに設定する場合、IsFullScreen に値を設定すればいい。
ゲーム実行中に変更する場合は、ToggleFullScreen 叩くと入れ替わる。
画面サイズは GraphicsDeviceManagerのPreferredBackBufferWidth, Height で変更する。
因みに、フルスクリーンをかけると、この解像度に最も近いディスプレイモードに切り替わる。

Application の終了

Game の Exit 叩くとアプリケーションを終了すると。

2D作画

SpriteBarch クラスを使用する。
基本的には LoadContent でインスタンス作って Draw で Begin/End 間で作画するんだよだ。
IDisposable IF 継承してるってことは、UnloadContent でDisposeすべきなんだろうな。

Texture2D のサイクルをざっくり。
Texture2D のインスタンス作った後、FromStream で画像を引っ張ってくる。

using (Stream stream = File.OpenRead("img\\bc.jpg"))
{
    this.texture1 = Texture2D.FromStream(GraphicsDevice, stream);
}

SpritBatch の Draw(Texture2D, Vector2D, Color) 経由で作画する。作画座標は Vector2 で指定、Color 指定すると、ベース色を指定できる。ベース色に画像が重なるイメージか、、、、まぁ基本白でいい。

Splite の伸縮・回転

SpritBatch の Draw の Nullable 引数に値を突っ込むと、テクスチャの切り抜きができる。
てーかテクスチャ切り抜きまでサポートしてんのかwwww
これはいいね。

MathHelper

計算処理を行うメソッドと、定数を供給してる。

ContentsImporter

XNA4.0 でプロジェクトを作ると、Contentsプロジェクトが作成される。
で、そこに画像落とすと、メインプロジェクトの Contents に *.xnb ファイルができてる。
こいつは ContentManager 経由で取得できて、通常「AssetName」で管理されてる。この名前の参照は、追加したコンテントの「プロパティ」から参照できる。
取得をする場合はこんな感じ。

this.texture1 = this.Content.Load<Texture2D>("bc");

プリコンパイルされてるから、読み込み速度もよさそう(?)だ。
で、終了時には、

this.Content.Unload();

にて一発開放。
そういう意味では、リソースの管理をこれに一任すると余計なコードが減っていいかもね。

文字列作画

フォントもリソースなんですねー。Contentプロジェクトに右クリックで新規追加で、フォントを指定。
XML形式で色々設定があるので、それで書き込むと。
お次は、メインプロジェクトで font を Content.Loadで読み取る。
後は

spriteBatch.DrawString(this.font, "hoge", new Vector2(100, 100), Color.Red);