【Unity】UI:背景画像をアスペクト比率の異なる端末に対応する
目次
準備
- 背景素材は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;
}
}
}
}
これで画面下中央を基点として背景をスケール出来る様になります。