2017/08/22実行ファイル起動時の画面解像度の強制変更スクリプトUnityスクリプトデバッグビルド小ネタTweet福島ゲームジャムに参加してたお......先生ェ......!身体張りすぎっす......!30時間は短かったけどいちおー形にはできたよまた小手先のテクニックおぼえたし参加して良かったわ......さて、色々レポートもしていきたいが今回は実用的なスクリプトを1個共有しておこう。Unityで開発したプロジェクトをビルドし、実行ファイルを起動するとPC環境によって解像度が変わり、表示物やUIの比率がずれてしまうことがよくある。開発中はエディタ上でテストプレイするのが普通なので、いざビルドしたときにこの不具合に見舞われてパニックになってしまう事は多い。起動時に解像度を変更できないようにする1024*768ピクセルの画面サイズを想定して作ったものを、プレイヤーが別のサイズ(またはフルスクリーン)で起動したら表示が崩れてしまうのなら、必ず1024*768ピクセルで起動して変更できないようにする。そんなことあるっすか!?Unityが前に開いた時の画面の解像度を記憶していて変わらないことがあるんだという、なんだか腑に落ちない設定なのだ。解像度の強制指定スクリプトこのやり方はスクリプト側で強引に「画面の表示をxxxx×yyyyにする」という命令を出すものなので、本当はもっとスマートなやり方があると思うのだけど、調べてうまくいかなかったのでこのやり方をメモしておく(Windows、Mac、Linuxに対応)。コメントにもあるが、プロジェクト実行時、最初に読み込まれるC#スクリプトの中に記述しておく。Awakeはスクリプト読み込み時に1回だけ処理されるので、その中で画面解像度を指定しているわけだスクリプトが読み込まれるたびに命令が飛ぶので、実装するスクリプトファイルによってはシーンをまたいだ時に再度読み込まれる可能性がある。Heightの値はデフォルトではゼロになっているので、画面サイズがゼロになってしまう。この不具合が起きる時はシーンごとにインスペクタービュー上で数値を入力する必要があるPrivate変数にしたらうまく機能しなかったんだよね何でなんすかねぇ......他にいいやり方があるかも知ってる人がいたらそめ先生に教えてくれぃ助け合いながら生きていくスタイルっすね!Windows、Mac、Linux以外のプラットフォームを使用する場合はスクリプト内のプラットフォーム名を変更したらうまくいくかもしれない(未検証)。各プラットフォームの表記はこちらのページを参照してみてくれっ。