iOS対応

【Unity×iOS】画面を縦向き・横向きに固定する方法

Unity で iOS アプリを作るとき、画面の向き(オリエンテーション)を固定しないと、
メニューが逆さまに表示されたり、ゲームプレイ中に UI が崩れたりといった思わぬトラブルが起こります。
本記事では 「縦固定」/「横固定」 の両方に対応した最適な設定手順を、初心者にもわかりやすく解説します。

この記事でわかること

  • Unity Editor での Player Settings 設定手順
  • Xcode 側での Info.plist のチェックポイント
  • スクリプトで動的に向きを切り替える サンプルコード
  • ビルド後に向きが変わってしまう “あるある” エラーの原因と対策
  • App Store 審査 で NG にならないための注意点

Unity Editorでの設定

File › Build Settings → “Player Settings…” をクリック。
Playerを選択 → 右側のiOSを選択 →“Resolution and Presentationが対象です。

項目推奨値(縦固定)推奨値(横固定)
Default OrientationPortraitLandscape Left (または Right)
Allowed Orientations for Auto-Rotation(Unity6以降?)Portrait のみ ONLandscape Left / Right のみ ON

Xcode (Info.plist)での確認

ビルドが終わったらInfo.plist をチェックします。
以下のキーが Unity の設定と一致しているか確認しましょう。

スクリプトで動的に向きを制御する方法

一部のシーンだけ横向きにしたい。そんなときは ScreenOrientation API が便利です。

using UnityEngine;

public class OrientationLocker : MonoBehaviour
{
    // 例:Awake 時に縦固定
    void Awake()
    {
        LockPortrait();
    }

    public void LockPortrait()
    {
        Screen.orientation = ScreenOrientation.Portrait;
        Screen.autorotateToLandscapeLeft  = false;
        Screen.autorotateToLandscapeRight = false;
        Screen.autorotateToPortrait       = true;
        Screen.autorotateToPortraitUpsideDown = false;
    }

    public void LockLandscape()
    {
        Screen.orientation = ScreenOrientation.LandscapeLeft;
        Screen.autorotateToLandscapeLeft  = true;
        Screen.autorotateToLandscapeRight = true;
        Screen.autorotateToPortrait       = false;
        Screen.autorotateToPortraitUpsideDown = false;
    }
}

よくある落とし穴とデバッグTips

症状原因対策
iPad で勝手に横になるUISupportedInterfaceOrientations~ipad が縦横両方不要な向きを削除
起動画面 (Launch Screen.storyboard) だけ横になるLaunch Screen の View が横固定Storyboard の View 属性を “Inferred” に
特定シーンだけ UI が伸びるCanvas Scaler が “Match Width Or Height” のまま縦横別 Canvas を用意 or スクリプトで切替
App Store Connect で “システム回転不可” 警告Info.plist と実装が矛盾設定・コード両方を統一

まとめ

  • 最優先は Player Settings:ここで正しく設定すれば 8 割は解決。
  • Info.plist を必ず確認:Unity からの自動生成を鵜呑みにしない。
  • 動的制御は Screen.orientation:ただし Info.plist に同じ向きを許可する。
  • 審査リジェクト防止のため “宣言外のオリエンテーション” をゼロに。

これで 縦固定/横固定 のトラブルに悩まされることなく、安心して iOS 向け Unity アプリをリリースできます。
ぜひプロジェクトに取り入れてみてください!