全画面モード
全画面モードでゲームを起動する
これまでのゲームは、Windows 上で実行するとウィンドウが表示され、ウィンドウの中にゲーム画面が表示されていました。Xbox 360 の場合は、ウィンドウの概念が存在しないため、常に画面全体にゲームが描画されます。Windows 上でも、ウィンドウではなく画面全体を使った全画面モード(フルスクリーン)に対応したいと考えるでしょう。ゲーム画面を大きく全体に表示できれば、その方が臨場感も高まり、プレイヤーはゲームに集中できます。
全画面モードの状態でゲームを起動する方法は、非常に簡単です。GraphicsDeviceManager クラスの IsFullScreen プロパティは、ゲームを全画面モードで起動するかどうかを表します。
public bool IsFullScreen { get; set; }
このプロパティが true であれば、全画面モードでゲームを起動することを表します。デフォルトで、プロパティの値は false に設定されていますが、ゲームを起動する前に true に設定することで、全画面モードでゲームを起動してくれます。ゲームを実行しているシステムが、全画面モードをサポートしていない場合や、全画面モードしかサポートしていない場合、このプロパティの値は無視されます。
using Microsoft.Xna.Framework; public class TestGame : Game { public static void Main(string[] args) { using (Game game = new TestGame()) game.Run(); } private GraphicsDeviceManager graphicsDeviceManager; public TestGame() { graphicsDeviceManager = new GraphicsDeviceManager(this); graphicsDeviceManager.IsFullScreen = true; } }
コード1は、コンストラクタで GraphicsDeviceManager クラスのインスタンスを生成した後に、IsFullScreen プロパティを true に設定しています。この状態でゲームが起動されると、GraphicsDeviceManager が自動的に全画面モードに切り替えてくれます。
全画面モードは、ゲーム画面を現在のスクリーンのサイズに広げるものではありません。ゲーム画面のサイズに合わせてディスプレイモードを切り替えてくれます。全画面モードに移行したときの画面解像度は、前述したバックバッファのサイズに合わせられます。デバイスが指定されたバックバッファのサイズに対応する解像度に対応していない場合、GraphicsDeviceManager の判断によって最適と思われる解像度が選択されます。
ウィンドウモードと全画面モードの切り替え
IsFullScreen プロパティによる全画面モードでの起動は、ゲーム起動時に全画面モードにするかどうかという設定でした。起動後に IsFullScreen プロパティの値を変更しても、効果はありません。ゲーム起動後に、プレイヤーの設定などによってウィンドウモードと全画面モードを切り替えるには ToggleFullScreen() メソッドを使います。
public void ToggleFullScreen ()
このメソッドを呼び出すと、現在がウィンドウモードの場合は全画面モードに、全画面モードであればウィンドウモードに切り替わります。
using Microsoft.Xna.Framework; public class TestGame : Game { public static void Main(string[] args) { using (Game game = new TestGame()) game.Run(); } private GraphicsDeviceManager graphicsDeviceManager; private double t; public TestGame() { graphicsDeviceManager = new GraphicsDeviceManager(this); } protected override void Update(GameTime gameTime) { t += gameTime.ElapsedGameTime.TotalMilliseconds; Window.Title = t.ToString(); if (t > 10000) { t = 0; graphicsDeviceManager.ToggleFullScreen(); } base.Update(gameTime); } }
コード2は、10 秒毎に全画面モードとウィンドウモードを切り替えるプログラムです。ゲームを実行し 10 秒以上経過すると画面が切り替わります。そのまま、また 10 秒以上経過すると元の画面に戻ります。このように、ゲームの実行時に全画面モードへの切り替えをサポートするには ToggleFullScreen() メソッドを呼び出してください。