Unity6でiOSでスマホを縦横回転させた時の挙動が滑らかになった

Unity6でiOSスマホを縦横回転させた時の挙動が滑らかになった話です。

Unity2022.3.28f1
Unity6000.0.27f1
iPhone13 / iOS18.5

スマホを縦横回転させた時の挙動が滑らかになった話

iOSのネイティブアプリでは、スマホの縦横を回転させると、画面もスムーズに回転しながら切り替わります。
これに対してUnityで作ったアプリでは、画面が回転せずに1フレームでパッと切り替わってしまうことがありました。
この挙動は特にプログラムから画面回転を制御する時に顕著だったように思います。

Unity2022.3.28f1

Unity6ではiOSの画面を縦横回転させた時の挙動が滑らかになりました。
リリースノートに明記はされていませんでしたが、手元のプロジェクトのUnityバージョンを上げていて気づきました。

Unity6000.0.27f1

挙動確認用の実装

この挙動を確認するために適当なシーンを作成し、以下のスクリプトを適当なGameObjectにアタッチして3秒ごとに回転させました。

using System.Collections;
using UnityEngine;

public class Example : MonoBehaviour
{
    private const float ToggleInterval = 3f;

    private void Start()
    {
        Screen.autorotateToPortrait = true;
        Screen.autorotateToPortraitUpsideDown = false;
        Screen.autorotateToLandscapeLeft = true;
        Screen.autorotateToLandscapeRight = true;
        Screen.orientation = ScreenOrientation.LandscapeLeft;
        StartCoroutine(ToggleOrientationCoroutine());
    }

    private IEnumerator ToggleOrientationCoroutine()
    {
        // 3秒ごとに画面の向きを切り替える
        while (true)
        {
            yield return new WaitForSeconds(ToggleInterval);
            ToggleOrientation();
        }
    }

    private void ToggleOrientation()
    {
        if (Screen.orientation == ScreenOrientation.LandscapeLeft)
            Screen.orientation = ScreenOrientation.Portrait;
        else
            Screen.orientation = ScreenOrientation.LandscapeLeft;
    }
}

結果

これを適当なGameObjectにアタッチし、新旧バージョンのUnityで挙動を比較したところ以下のポストの通りの結果が得られました。

明らかに滑らかに画面が回転していることを確認できました。