「MonoGameで解像度を設定する」の版間の差分
ナビゲーションに移動
検索に移動
(→実装例) |
|||
16行目: | 16行目: | ||
protected override void Initialize() | protected override void Initialize() | ||
{ | { | ||
− | // | + | // 要望する解像度を設定する |
graphics.PreferredBackBufferWidth = 360; | graphics.PreferredBackBufferWidth = 360; | ||
graphics.PreferredBackBufferHeight = 240; | graphics.PreferredBackBufferHeight = 240; | ||
+ | // ApplyChangesはInitializeメソッド呼び出し以降で利用可能になる。 | ||
+ | // コンストラクタで呼んでも無反応。 | ||
graphics.ApplyChanges(); | graphics.ApplyChanges(); | ||
2017年3月24日 (金) 07:31時点における版
実装例
MonoGameで画面解像度を変更するにはGraphicsDeviceManagerインスタンスのPreferredBackBufferWidthプロパティおよびPreferredBackBufferHeightプロパティで設定を行う。
なお、Xamarin.Macなどでウインドウ表示であれば設定値がそのまま使われるが、Xamarin.Androidなどでフルスクリーン環境の場合はディスプレイ側が対応する「もっとも近い」解像度に自動変更されるので注意すること。つまり「変更」ではなく「要望」と言った方が正しい。
public class Game1 : Game
{
GraphicsDeviceManager graphics;
public Game1()
{
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
}
protected override void Initialize()
{
// 要望する解像度を設定する
graphics.PreferredBackBufferWidth = 360;
graphics.PreferredBackBufferHeight = 240;
// ApplyChangesはInitializeメソッド呼び出し以降で利用可能になる。
// コンストラクタで呼んでも無反応。
graphics.ApplyChanges();
base.Initialize();
}
}
また、解像度を要望する(反映させる)GraphicsDeviceManager.ApplyChangesメソッドは以下の点に注意すること。
- Gameクラスのコンストラクタ内で呼び出しても無反応
- 明示的に呼び出す場合はGameクラスのInitializeメソッドが呼ばれたタイミングで利用可能となる
- 暗黙的にGameクラスのbase.Initialize()の中でも実行されている模様
- base.Initializeメソッドを呼び出した時点でゲームループが走り出すので注意。