本日はUnityの小ネタ枠です。
Unityでアプリのウィンドウサイズ(解像度)をスクリプトから変更する方法です。
Screen.fullScreen
Screen.fullScreenを参照することで現在のウィンドウが最大化状態かを確認したり、変更することができます。
docs.unity3d.com
// ウィンドウモードに切り替える Screen.fullScreen = false; // フルスクリーンモードに切り替える Screen.fullScreen = true;
Screen.SetResolution
Screen.SetResolution関数を使用することで現在の解像度をスクリプトから変更することができます。
docs.unity3d.com
// フルHDのウィンドウに切り替える Screen.SetResolution(1920, 1080, false);
サンプルスクリプト
トグルボタンの操作に合わせてウィンドウモードと解像度を切り替える以下のサンプルスクリプトを作成しました。
それぞれサンプルシーンに追加してトグルの参照を設定しました。
ウィンドウモードを切り替えるサンプルスクリプト
・WindowModeSettingController
using UniRx; using UnityEngine; using UnityEngine.UI; public class WindowModeSettingController : MonoBehaviour { [SerializeField] private Toggle windowedToggle; [SerializeField] private Toggle fullscreenToggle; // Start is called before the first frame update void Start() { // 現在のウィンドウモードを取得する bool isFullscreen = Screen.fullScreen; // Toggleの状態を設定する windowedToggle.isOn = !isFullscreen; fullscreenToggle.isOn = isFullscreen; // Toggleのイベントリスナーを追加する windowedToggle.onValueChanged.AsObservable() .Subscribe(isOn => { if (isOn) { // ウィンドウモードに切り替える Screen.fullScreen = false; } }) .AddTo(this); fullscreenToggle.onValueChanged.AsObservable() .Subscribe(isOn => { if (isOn) { // フルスクリーンモードに切り替える Screen.fullScreen = true; } }) .AddTo(this); } }

解像度を切り替えるサンプルスクリプト
・WindowModeSettingController
using UniRx; using UnityEngine; using UnityEngine.UI; public class ResolutionSettingController : MonoBehaviour { [SerializeField] private Toggle fullHDToggle; [SerializeField] private Toggle normalHDToggle; [SerializeField] private Toggle halfHDToggle; void Start() { // 現在の解像度を取得する Resolution currentResolution = Screen.currentResolution; // Toggleの状態を設定する fullHDToggle.isOn = (currentResolution.width == 1920 && currentResolution.height == 1080); normalHDToggle.isOn = (currentResolution.width == 1280 && currentResolution.height == 720); halfHDToggle.isOn = (currentResolution.width == 640 && currentResolution.height == 360); // Toggleのイベントリスナーを追加する fullHDToggle.onValueChanged.AsObservable() .Subscribe(isOn => { if (isOn) { // 現在のウィンドウモードを取得する bool isFullscreen = Screen.fullScreen; // フルHDに切り替える Screen.SetResolution(1920, 1080, isFullscreen); } }) .AddTo(this); normalHDToggle.onValueChanged.AsObservable() .Subscribe(isOn => { if (isOn) { // 現在のウィンドウモードを取得する bool isFullscreen = Screen.fullScreen; // HDに切り替える Screen.SetResolution(1280, 720, isFullscreen); } }) .AddTo(this); halfHDToggle.onValueChanged.AsObservable() .Subscribe(isOn => { if (isOn) { // 現在のウィンドウモードを取得する bool isFullscreen = Screen.fullScreen; // 640x360に切り替える Screen.SetResolution(640, 360, isFullscreen); } }) .AddTo(this); } }

プロジェクトをビルドしてアプリを起動して動作を確認してみました。
以下の通り、ウィンドウモードと解像度をボタン操作で変更することができました。
ウィンドウモードの切り替え
ウィンドウモード

フルスクリーンモード

解像度の切り替え
1920x1080

1280x720

640x360
