SilverlightとXNAを融合させてWindows Phoneアプリケーションを開発しよう
Windows Phone 7.5でつくる3Dアプリケーション(2)
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のどちらのカテゴリからプロジェクトテンプレートを選択しても、作成されるプロジェクトの内容に差異はありません。
執筆時点で最新のWindows Phone SDK 7.1(RTW)では、[XNA Game Studio 4.0]カテゴリからSilverlight/XNAプロジェクトを作成した場合、Expression BlendでXAMLファイルが編集できなかったり、プロジェクトの構成が崩れるなどの不具合が発生します。
ただし、これらの不具合はSilverlightカテゴリから作成した場合には発生しません。このため、Silverlight/XNAプロジェクトを新規に作成する場合は、[Silverlight for Windows Phone]カテゴリから選択することを推奨します。
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アプリケーションは、専用のプロジェクトテンプレートを利用することで簡単に作成できます。それでは、ソースコードの中身まで追っていきましょう。
この記事は参考になりましたか?
- Windows Phone 7.5でつくる3Dアプリケーション連載記事一覧
-
- Windows Phoneで3Dアプリケーションを作成しよう
- 3Dモデルを作成してWindows Phoneアプリケーションで描画しよう
- SilverlightとXNAを融合させてWindows Phoneアプリケーションを開発...
- この記事の著者
-
もとひろん(モト スクウェア ソリューション)
自営業でシステムエンジニアを営んでおります。主に.NETテクノロジによるシステム開発を得意としておりますが、いざとなれば何でもやります。ふつつかものですが、よろしくお願い致します!WebサイトMOTO SQUARE SOLUTIONTwitter@MOTOSQUARE
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア



