【Unity】UI:背景画像をアスペクト比率の異なる端末に対応する

DEVELOP, Unity

目次

準備

  • 背景素材は16:9のものを用意する。

Prefabの構成

ルートのGameObjectを全画面にストレッチにする。

子のGameObject、ここでは “BackGround" のアンカーを画面下中央(Bottom Center)にする。

スクリプト

子のGameObjectに以下のスクリプトを割り当てる。

using System;
using UnityEngine;
using UnityEngine.UI;
namespace UI
{
    public class AdjustScale : MonoBehaviour
    {
		private Vector2 baseScreenSize = new Vector2(1280, 720);
        private Vector3 defaultScale;
        private void Start()
        {
            defaultScale = transform.localScale;
            Refresh();
        }
        void Refresh()
        {
            // 背景のサイズ調整。
            {
                float defaultAspect = baseScreenSize.y / (float)baseScreenSize.x;
                float currentAspect = Screen.height / (float)Screen.width;
                float ratio = 0.0f;
                if (currentAspect > defaultAspect)
                {
                    ratio = currentAspect / defaultAspect;
                }
                else
                {
                    ratio = defaultAspect / currentAspect;
                }
                var scale = transform.localScale;
                scale.x = ratio;
                scale.y = ratio;
                transform.localScale = scale;
            }
        }
    }
}

これで画面下中央を基点として背景をスケール出来る様になります。

Posted by kazupon