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

2021年7月29日

どうも、だらはです。
先日、スクリプトから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のサイズを調整しています。
倍率は第一引数で指定します。縦横の長さをみて判断させています。

筆者
筆者
まぁ、あまり難しいことは考えず、コピペしてください('ω’)

以上、だらはでした。

スポンサーリンク

応用

Posted by daraha_gm