XNAメモ – GameComponentを使用してプラグインっぽいクラスの作り方

Posted: 2012年1月25日 カテゴリー: プログラミングメモ, XNA, XNAメモ
タグ:, , , , , , ,

今回は、GameComponentクラスを使用してクラスをプラグインっぽくする方法をメモします。

プラグインっぽく足すだけで動くクラスを作ることで、クラスのパーツ化を簡単にし、動作も自動化(っぽく)出来ます。さらに、付け足す時にはGame1クラスのコンストラクタに1行足すだけなので、複数人で作業するときにも便利です。

これを実装するには、GameComponentクラスを作製するクラスに継承させます。GameComponentクラスを継承したクラスはInitialize()メソッドと、Update()メソッドをオーバーライドできます。GameComponentクラスを継承したクラスのInitialize()メソッドはGame1クラスのInitialize()メソッドの後に呼ばれます。具体的には、base.Initialize()内でGame1クラスに登録されている全てのGameComponentのInitialize()メソッドが呼ばれています。Update()メソッドも同じです感じです。これにより、GameComponentを継承し、Game1クラスに登録されたクラスは、自動で動きます。

GameComponentクラスを使う例は、入力処理のマネージャークラス、プロファイリング用のクラスなど、色々とあります。

 

GameComponentクラスを継承したクラスを使うにはまず、クラス宣言時にGameComponentを継承します。継承したクラスのコンストラクタで、ベースクラスのコンストラクタを呼ぶのを忘れないください。このクラス(Inputクラス)のコンストラクタ内にGameクラスの引数があるのは、GameComponentが必要としているためです。

class Input : GameComponent
{
public Input(Game game)
: base(game)
{

}

次に、Initialize()メソッドとUpdate()メソッドをオーバーライドします。

public override void Initialize()
{
// ... このクラスの初期化
base.Initialize();
}

public override void Update(GameTime gameTime)
{
// ... 入力処理の更新
base.Update(gameTime);
}

クラスはこれで良いので、後はGame1のコンストラクタ内で登録するだけです。

public Game1()
{
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";

// Inputクラスをコンポーネントとして、登録する
Components.Add(new Input(this));
}

以上です。説明がわかりにくい気がしますので (というか、下手すぎる orz)、解らないところはコメントください m_ _m

コメント
  1. […] XNAメモ – GameComponentを使用してプラグインっぽいクラスの作り方 […]

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中