Silverlight/XNAアプリケーションの作成
Windows Phone SDK 7.1には、Silverlight/XNAアプリケーション専用のプロジェクトテンプレートが用意されています。このプロジェクトテンプレートを利用してプロジェクトを作成した場合、SilverlightとXNAが共存するアプリケーションを簡単に構築できます。
具体的には、Visual Studioの[ファイル]メニューから[新しいプロジェクト]を選択し、[Silverlight for Windows Phone]もしくは[XNA Game Studio 4.0]カテゴリの一覧から[Windows Phone Silverlight/XNA アプリケーション]プロジェクトテンプレートを選択します。この際、SilverlightとXNAのどちらのカテゴリからプロジェクトテンプレートを選択しても、作成されるプロジェクトの内容に差異はありません。
Silverlight/XNAプロジェクトの内容
Silverlight/XNAプロジェクトの内容を見てみましょう。Silverlight/XNA専用のプロジェクトテンプレートを利用した場合、以下の構成でプロジェクトが構築されます。
スタートアップ プロジェクトである「SlXnaApp1」に着目すると、「MainPage.xaml」や「GamePage.xaml」といった、Silverlight特有のXAMLファイルが存在しています。このことからも、Silverlight/XNAのベースとなるフレームワークは、Silverlightであることが伺えます。そこに、Contentプロジェクトである「SlXnaApp1LibContent」といった、XNAの要素が追加される形になっています。
つまり、SilverlightとXNAを共存させるということは、Silverlightの上でXNAを動作させることであると言い換えることが可能です。
Silverlight/XNAプロジェクトには、「SlXnaApp1」と「SlXnaApp1LibContent」のほかにも、「SlXnaApp1Lib」というプロジェクトが存在します。このプロジェクトは、Silverlightで構成された「SlXnaApp1」と、XNAの「SlXnaApp1LibContent」を仲介するために存在します。このように、異なるフレームワークを橋渡しするという規格外の運用をしているため、このプロジェクトを参照する「SlXnaApp1」では、プロジェクト参照において常に警告が発生しています。
なお、Silverlight/XNAプロジェクトを実行した場合、以下のようなアプリケーションが起動します。このアプリケーションでは、Silverlightで構築されたUI画面(MainPage)のボタンを押下すると、XNAで構築された水色の画面(GamePage)に遷移します。
このように、Silverlight/XNAアプリケーションは、専用のプロジェクトテンプレートを利用することで簡単に作成できます。それでは、ソースコードの中身まで追っていきましょう。