差分
ナビゲーションに移動
検索に移動
[[MonoGame]]はものすごく低レベルな[[API]]群なので、[[Xamarin.Android]]の各種Viewを混在させたいことも多い。
たとえばMonoGameには「文字入力」などという軟弱な概念はないので日本語入力対応のテキストボックスを使いたい場合や、[[Google AdMob]]で[[バナー広告]]を表示したい場合などが考えられる。
== 実装例 ==
新規プロジェクトを作った直後に自動生成される[[ソースコード]]はこんな感じ。アクティビティにいきないMonoGameのViewを追加している。[[Xamarin.Mac]]と違ってMonoGameも普通のViewじゃん。<source>
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
var g = new Game1();
SetContentView((View)g.Services.GetService(typeof(View)));
g.Run();
}
</source>
MonoGameもXamarin.AndroidのViewの一種でした。ならば普通にAndroid.Widget.Layoutに噛ませばいいんじゃね。<source>
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
// レイアウトを手動で構築する
var layout = new FrameLayout( this );
SetContentView( layout );
// MonoGameが動くAndroid.Views.Viewを取得する。
// Game1はMicrosoft.XNA.Framework.Gameクラスの派生クラス。
var g = new Game1();
var gameView = g.Services.GetService<View>();
layout.AddView( gameView );
// ゲームループ開始
g.Run();
}
</source>
== 関連項目 ==
*
たとえばMonoGameには「文字入力」などという軟弱な概念はないので日本語入力対応のテキストボックスを使いたい場合や、[[Google AdMob]]で[[バナー広告]]を表示したい場合などが考えられる。
== 実装例 ==
新規プロジェクトを作った直後に自動生成される[[ソースコード]]はこんな感じ。アクティビティにいきないMonoGameのViewを追加している。[[Xamarin.Mac]]と違ってMonoGameも普通のViewじゃん。<source>
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
var g = new Game1();
SetContentView((View)g.Services.GetService(typeof(View)));
g.Run();
}
</source>
MonoGameもXamarin.AndroidのViewの一種でした。ならば普通にAndroid.Widget.Layoutに噛ませばいいんじゃね。<source>
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
// レイアウトを手動で構築する
var layout = new FrameLayout( this );
SetContentView( layout );
// MonoGameが動くAndroid.Views.Viewを取得する。
// Game1はMicrosoft.XNA.Framework.Gameクラスの派生クラス。
var g = new Game1();
var gameView = g.Services.GetService<View>();
layout.AddView( gameView );
// ゲームループ開始
g.Run();
}
</source>
== 関連項目 ==
*