【Unity】PC用にBuildしたゲームがFull Screenで表示される問題を解決する方法

どうもこんにちは、ちはるです。

Unityロゴ

Unity(Version 2019.2.5f1)でゲーム開発するぞー!ということでチマチマ進めているわけですが、そこで起こった問題と解決方法を書いていきます。

今回の問題点

PCゲーム開発のためUnityプロジェクトを作成し、マップチップを配置し、物は試しと

 File > Build And Run

でアプリケーションを実際に実行してみたところ、アプリケーションがPCの画面にフルスクリーンで表示されるという事態が発生。

解像度1920×1080で制作を行いたいため、ちゃんとスクリーンのサイズを指定してアプリケーションを立ち上げられるようにしたいところです。

原因

原因は、プロジェクト作成時におけるBuild設定で、画面サイズがデフォルトでFullscreen Windowになっているためと思われます。

Build設定の確認方法は以下の通り。

 File > Build Settings

すると次のような画面が表示され、Platformの選択等が可能です。

Build_Settingsウィンドウ

このウィンドウ中のPlayer Settingsボタンを押下*1し、

 Player > Resolution and Presentation

に進むと、Resolutionの項目が次のような設定になっていました。

Player_Settingsウィンドウ

 

 

解決法1_Build Settingsで設定を変更する

デフォルトの設定がFullscreen Windowになっているなら、この設定を変更してやれば良いわけです。

なので、次のように設定を変更しました。

設定を変更したPlayer_Settingsウィンドウ

ヨッシャこれで解決や!と喜びたいところですが、そうは問屋*2が卸してくれないようです。

上記設定後、嬉々として再びBuildしてみたところ……、設定以前と同じく、フルスクリーンでゲームが立ち上がってしまいました。

どうやら、Unityは前回Buildした際の画面サイズを覚えていて、次回Build時にも適応するバグなんだか仕様なんだかよく分からない事をするらしい。

ということで、上記の設定を行なった上で、スクリーンサイズをスクリプトで指定してやろう、というのが次の解決法です。

解決法2_クリプトでスクリーンサイズを指定

この解決法は、以下の属性(Attribute)を使用します。

この属性により、ゲームのロード直後に特定のスクリプトを実行することが可能になるようなので、このスクリプト内でスクリーンのサイズを指定してやることによって、今回の問題の解決をはかります。

スクリプトは以下の通り。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TestInitialize
{

	// 属性の設定
	[RuntimeInitializeOnLoadMethod]
	static void OnRuntimeMethodLoad() {

		Debug.Log("After Scene is loaded and game is running");

		// スクリーンサイズの指定
		Screen.SetResolution(1920, 1080, false);
	}
}

これだけでOK。

このスクリプトはGameObjectにアタッチする必要もなく動いてくれます。

そしてこの属性はどのシーンから起動しても必ず呼ばれるようなので、共通的に行いたい処理を定義するのにも役立ちそうです。

 

 

おわりに

かくして、スクリーンのサイズ指定に成功したのであった。

ちなみに、上記方法だと、無料版Unityで制作した際に挿し込まれるUnityロゴ画面には反映されない(ロゴ画面後に実行される)みたいです。

そういった点も含めてもっと良い方法があるのかもしれませんが……、ひとまずは問題解決ということで。

 

 

 

 

*1:開かれるウィンドウのタブにはProject Settingsと書かれてますが、何故かは知りません

*2:ユニティー・テクノロジーズ