VisualStudioでXamarin+MonoGameを使ったWindowsとAndroid向け共有プロジェクトを作成します。
はじめに
WindowsとAndroidを対象とした以下の要件を満たす共有プロジェクトを作成します。
今回はMacやWindowsPhoneが手元にないのでiOSやWindowsPhoneは対象としていません。しかしプロジェクトを追加することで同じように対応はできる・・はず?
環境
- VisualStudio2015 Community
- Xamarin
- MonoGame SDK
上記3点がインストールされている前提で進めます。
共有プロジェクト編
共有プロジェクトの作成
- VisualStudio2015Communityを起動します。
- [ファイル]⇒[新規作成]⇒[プロジェクト]の順にクリックすると[新しいプロジェクト]ダイアログが表示されます。
- [インストール済み]⇒[テンプレート]⇒[VisualC#]⇒[Windows]⇒[共有プロジェクト]の順にクリックして[OK]をクリックします。
プロジェクト「SharedProject1」が以下のように作成されます。
Windows向けプロジェクトを作成する
- [ソリューションエクスプローラー]から先ほど作成したソリューション「SharedProject」を右クリックして[追加]⇒[新しいプロジェクト]と順にクリックすると[新しいプロジェクト]ダイアログが開きます。
- [インストール済み]⇒[テンプレート]⇒[VisualC#]⇒[MonoGame]⇒[MonoGame Windows Project]の順にクリックして[OK]をクリックします。
プロジェクト「Game1」が以下のように作成されます。
Android向けプロジェクトを作成する
- [ソリューションエクスプローラー]から作成したソリューション[SharedProject]を右クリックして、[追加]⇒[新しいプロジェクト]と順にクリックすると[新しいプロジェクト]ダイアログが開きます。
- [インストール済み]⇒[テンプレート]⇒[VisualC#]⇒[MonoGame]⇒[MonoGame Android Project]の順にクリックして[OK]をクリックします。
プロジェクト「Game2」が以下のように作成されます。
以下のような[ファイル変更の検出]というダイアログが表示されることがありますが「すべて再読み込み」をクリックすればOKです。
SharedProjectに共有クラスを作る
- [ソリューションエクスプローラー]でプロジェクト[SharedProject1]を右クリックして[追加]⇒[新しい項目]の順にクリックして[新しい項目の追加]ダイアログを開きます。
- [インストール済み]⇒[C#]⇒[クラス]⇒[追加(A)]の順にクリックします。
以下のように「Class1.cs」が作成されます。
Class1.csに共通して呼び出されるコードを記述する
以下コードをClass1にコピーします。
class Class1
{
public Class1()
{
int test = 0;
}
}
プロジェクトの参照に「SharedProject1」を追加する
- [ソリューションエクスプローラー]からプロジェクト[Game1]を右クリックして[参照]⇒[参照の追加(R)]とクリックして[参照マネージャー]を開きます。
- [共有プロジェクト]をクリックして表示される[SharedProject1]にチェックを入れて[OK]をクリックします。
以下のように[参照]に[SharedProject1]が追加されます。
Android側のプロジェクト[Game2]も同じように参照を追加してください。
WindowsプロジェクトからSharedProject1のClass1を呼び出す
- [Game1]プロジェクトの[Game1.cs]を開きます。
- ソースコードの最初に[using SharedProject1]と追加します。
- Initializeメソッドに[Class1 class1 = new Class1();]と追加します。
以下のようになります、赤枠部分が追加した内容です。
Android側のプロジェクト[Game2]も同じようにコードを追加してください。
ブレークポイントを置いて実行して処理が呼ばれているか確認する
- [Class1.cs]の[int test =0;]の行の左端をクリックしてブレークポイントを設置します。
- メニューから[ビルド(B)]⇒[ソリューションのビルド(B)]とクリックしてビルドします。
- メニューから[デバッグ(D)]⇒[デバッグの開始(S)]とクリックしてアプリを実行します。
- [Class1.cs]のブレークポイントを設置した場所で停止することを確認します。
Windows、Androidどちらのプロジェクトで実行しても同じ場所で停止することを確認します。
Windows、Androidの両方でClass1が共有できてますね!
あとはゲームに関するコードをSharedProjectにどんどん追加していけば良さそうです!
その他
プロジェクトのフォルダが削除できなくなる
結論としてはタスクマネージャーから「adb.exe」を終了させると削除できるようになります。
Android端末を接続していたときなどに関連しているかもしれません。