プロジェクト作成時に作られたソース
プロジェクト作成時に生成されたソース解析をしたいと思います。
「ソルーションエクスプローラ」から「Game1.cs」(C#のソースファイル)をダブルクリックするとソース編集できるようになります。
ソース編集でききるようになると、下のようなソースコードが現れます。
(ソースのコメントは英語で書かれているのですが、解りやすいように日本語に翻訳しています。)
各関数に関しては、コメントを参考にしてください。
namespace WindowsGame { public class Sample : Microsoft.Xna.Framework.Game { GraphicsDeviceManager graphics; ContentManager content; public Sample() { graphics = new GraphicsDeviceManager(this); content = new ContentManager(Services); } ///【ゲームが実行する前に呼ばれる関数】 /// 必要なサービスの検索や、グラフィック以外のデータ読み込みを処理してください。 /// base.Initializeを呼ぶと、登録したコンポーネントを初期化をします。 protected override void Initialize() { // 初期化処理をここに追加してください。 base.Initialize(); } ///【グラフィックデータを読込み処理のタイミングに呼ばれる関数】 /// loadAllContent が true なら、ResourceManagementMode.Automatic /// (システム側で管理するオートコンテンツ)関係のデータを読み込み /// falseであればResourceManagementMode.Manual(システム側で管理されないマニュアルコンテンツ) /// 関係のデータを読み込みます。 /// loadAllContent:どのタイプの内容をロードするか。 protected override void LoadGraphicsContent(bool loadAllContent) { if (loadAllContent) { // ResourceManagementMode.Automatic (システム側で管理するオートコンテンツ) // 関係のデータをロードしてください。 } // ResourceManagementMode.Manual (システム側で管理されないマニュアルコンテンツ) // 関係のデータをロードしてください。 } ///【グラフィックスデータの開放するタイミングで呼ばれる関数】 /// unloadAllContent が true なら、ResourceManagementMode.Automatic /// (システム側で管理するオートコンテンツ)関係のデータを開放してください。 /// falseであればResourceManagementMode.Manual(システム側で管理されないマニュアルコンテンツ) /// 関係のデータを開放してください /// システム側で管理されないマニュアルコンテンツはデバイスリセット時に破棄されます /// unloadAllContent:どのタイプの内容を開放するか protected override void UnloadGraphicsContent(bool unloadAllContent) { if (unloadAllContent) { // ResourceManagementMode.Automatic(システム側で管理するオートコンテンツ) // 関係のデータを開放します content.Unload(); } // ResourceManagementMode.Manual(システム側で管理されないマニュアルコンテンツ) // 関係のデータを開放します。 } ///【ゲーム中に「衝突が発生した」「入力情報がきた」「オーディオの再生した」 /// などの更新があった時に呼ばれる関数】 /// gameTime:タイミング値のスナップを提供します。 protected override void Update(GameTime gameTime) { // ゲームが出るのを許容します。 if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed) this.Exit(); // アップデート処理を追加してください。 base.Update(gameTime); } ///【ゲームが描画するタイミングで呼ばれる関数】 /// gameTime:タイミング値のスナップを提供します。 protected override void Draw(GameTime gameTime) { graphics.GraphicsDevice.Clear(Color.CornflowerBlue); // 描画処理をここに追加してください。 base.Draw(gameTime); } } }
関数の呼ばれるタイミングですが、以下のような流れになります。
Sample(); // クラス作成 Initialize(); // 初期化 LoadGraphicsContent(bool loadAllContent); // グラフィックデータ読み込み while( loop ){ Update(GameTime gameTime); //ゲーム中のキー入力処理など Draw(GameTime gameTime); //ゲーム中の描画処理などを } UnloadGraphicsContent(bool unloadAllContent); // グラフィックデータ開放