【Unity】解像度に合わせてGUIのサイズを調整する。Label()やButton()もコピペで対応可能。

どうも、だらはです。
先日、スクリプトからGUIを表示する方法についてまとめたのですが、ひとつ問題がありました。
それは、スマホなどのように解像度が端末ごとに異なる場合、意図しない実行結果となることでした。
(Label()メソッドは、GUIを位置情報で指定するため)
◆参考
今回は、解像度に合わせてGUIのサイズを調整する方法について紹介したいと思います。
基本、コピペで対応可能です!
複数の解像度に対応する方法
結論から言うと、以下のスクリプトをコピー&ペーストするだけで良いです。
float scale;
if (Screen.width > Screen.height)
scale = Screen.width / 720f;
else
scale = Screen.height / 720f;
GUIUtility.ScaleAroundPivot(new Vector2(scale, scale), Vector2.zero);
◆テクスチャのサイズを自動調整するスクリプトの例
using UnityEngine;
public class TextureSmp : MonoBehaviour
{
public Texture TexMan = null;
private void OnGUI()
{
float scale;
if (Screen.width > Screen.height)
scale = Screen.width / 720f;
else
scale = Screen.height / 720f;
GUIUtility.ScaleAroundPivot(new Vector2(scale, scale), Vector2.zero);
Rect rect = new Rect(10, 50, 400, 300);
GUI.Label(rect, TexMan);
}
}
こんな感じです。
解説
やっていることは超絶シンプルです。
GUIUtility.ScaleAroundPivot()メソッドにて、第二引数の位置を中心にGUIのサイズを調整しています。
倍率は第一引数で指定します。縦横の長さをみて判断させています。

まぁ、あまり難しいことは考えず、コピペしてください('ω’)
以上、だらはでした。
ディスカッション
コメント一覧
まだ、コメントがありません