「MonoGameで解像度を設定する」の版間の差分

提供:MonoBook
編集の要約なし
編集の要約なし
2行目: 2行目:
MonoGameで画面解像度を変更するにはGraphicsDeviceManagerインスタンスのPreferredBackBufferWidthプロパティおよびPreferredBackBufferHeightプロパティで設定を行う。
MonoGameで画面解像度を変更するにはGraphicsDeviceManagerインスタンスのPreferredBackBufferWidthプロパティおよびPreferredBackBufferHeightプロパティで設定を行う。


なお、[[Xamarin.Mac]]などでウインドウ表示であれば設定値がそのまま使われるが、[[Xamarin.Android]]などでフルスクリーン環境の場合はディスプレイ側が対応するもっとも近い解像度に自動変更されるので注意すること。
なお、[[Xamarin.Mac]]などでウインドウ表示であれば設定値がそのまま使われるが、[[Xamarin.Android]]などでフルスクリーン環境の場合はディスプレイ側が対応する「もっとも近い」解像度に自動変更されるので注意すること。つまり「変更」ではなく「要望」と言った方が正しい。
<source lang="csharp">
<source lang="csharp">
     public class Game1 : Game
     public class Game1 : Game
25行目: 25行目:
     }
     }
</source>
</source>
なお、解像度を要望する(反映させる)GraphicsDeviceManager.ApplyChangesメソッドは以下の点に注意すること。
また、解像度を要望する(反映させる)GraphicsDeviceManager.ApplyChangesメソッドは以下の点に注意すること。
* Gameクラスのコンストラクタ内で呼び出しても無反応
* Gameクラスのコンストラクタ内で呼び出しても無反応
* 明示的に呼び出す場合はGameクラスのInitializeメソッドが呼ばれたタイミングで利用可能となる
* 明示的に呼び出す場合はGameクラスのInitializeメソッドが呼ばれたタイミングで利用可能となる

2017年3月24日 (金) 07:28時点における版

実装例

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()
        {
            // TODO: Add your initialization logic here
            graphics.PreferredBackBufferWidth = 360;
            graphics.PreferredBackBufferHeight = 240;
            graphics.ApplyChanges();

            base.Initialize();
        }
    }

また、解像度を要望する(反映させる)GraphicsDeviceManager.ApplyChangesメソッドは以下の点に注意すること。

  • Gameクラスのコンストラクタ内で呼び出しても無反応
  • 明示的に呼び出す場合はGameクラスのInitializeメソッドが呼ばれたタイミングで利用可能となる
  • 暗黙的にGameクラスのbase.Initialize()の中でも実行されている模様
    base.Initializeメソッドを呼び出した時点でゲームループが走り出すので注意。

関連項目

参考文献