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);