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

提供: MonoBook
ナビゲーションに移動 検索に移動
(ページの作成:「== 実装例 == GraphicsDeviceManagerインスタンスのPreferredBackBufferWidthプロパティおよびPreferredBackBufferHeightプロパティで画面解像度を設...」)
 
imported>Administrator
 
(3人の利用者による、間の9版が非表示)
1行目: 1行目:
 
== 実装例 ==
 
== 実装例 ==
GraphicsDeviceManagerインスタンスのPreferredBackBufferWidthプロパティおよびPreferredBackBufferHeightプロパティで画面解像度を設定できる。なお、[[Xamarin.Mac]]などでウインドウ表示であれば設定値がそのまま使われるが、Xamarin.Androidなどでフルスクリーン環境の場合はディスプレイ側が対応するもっとも近い解像度に自動変更されるので注意すること。
+
MonoGameで画面解像度を変更するにはGraphicsDeviceManagerインスタンスのPreferredBackBufferWidthプロパティおよびPreferredBackBufferHeightプロパティで設定を行う。
 +
 
 +
なお、[[Xamarin.Mac]]などでウインドウ表示であれば設定値がそのまま使われるが、[[Xamarin.Android]]などでフルスクリーン環境の場合はディスプレイ側が対応する「もっとも近い」解像度に自動変更されるので注意すること。つまり「変更」ではなく「要望」と言った方が正しい。実際に設定された解像度を取得するには「[[MonoGameで解像度を取得する]]」の項目を参照。
 
<source lang="csharp">
 
<source lang="csharp">
 
     public class Game1 : Game
 
     public class Game1 : Game
14行目: 16行目:
 
         protected override void Initialize()
 
         protected override void Initialize()
 
         {
 
         {
             // TODO: Add your initialization logic here
+
             // 要望する解像度を設定する
 
             graphics.PreferredBackBufferWidth = 360;
 
             graphics.PreferredBackBufferWidth = 360;
 
             graphics.PreferredBackBufferHeight = 240;
 
             graphics.PreferredBackBufferHeight = 240;
 +
            // ApplyChangesはInitializeメソッド呼び出し以降で利用可能になる。
 +
            // コンストラクタで呼んでも無反応なので注意すること。
 
             graphics.ApplyChanges();
 
             graphics.ApplyChanges();
  
23行目: 27行目:
 
     }
 
     }
 
</source>
 
</source>
 +
また、解像度を要望する(反映させる)GraphicsDeviceManager.ApplyChangesメソッドは以下の点に注意すること。
 +
* Gameクラスのコンストラクタ内で呼び出しても無反応
 +
* 明示的に呼び出す場合はGameクラスのInitializeメソッドが呼ばれたタイミングで利用可能となる
 +
* 暗黙的にGameクラスのbase.Initialize()の中でも実行されている模様
 +
*: base.Initializeメソッドを呼び出した時点で[[ゲームループ]]が走り出すので注意。
  
 
== 関連項目 ==
 
== 関連項目 ==
 +
* [[MonoGame (Xamarin.Android)で初期解像度がおかしい機種の対策]]
 +
* [[MonoGameで解像度を取得する]]
  
 
== 参考文献 ==
 
== 参考文献 ==

2017年12月6日 (水) 10:28時点における最新版

実装例[編集 | ソースを編集]

MonoGameで画面解像度を変更するにはGraphicsDeviceManagerインスタンスのPreferredBackBufferWidthプロパティおよびPreferredBackBufferHeightプロパティで設定を行う。

なお、Xamarin.Macなどでウインドウ表示であれば設定値がそのまま使われるが、Xamarin.Androidなどでフルスクリーン環境の場合はディスプレイ側が対応する「もっとも近い」解像度に自動変更されるので注意すること。つまり「変更」ではなく「要望」と言った方が正しい。実際に設定された解像度を取得するには「MonoGameで解像度を取得する」の項目を参照。

    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メソッドを呼び出した時点でゲームループが走り出すので注意。

関連項目[編集 | ソースを編集]

参考文献[編集 | ソースを編集]