【Unity】画面回転を禁止して方向を固定する方法

画面回転の停止
スポンサーリンク

Unityでアプリ開発を行うときに、自動で画面回転が有効になっているのは便利な時もあります。しかし、作るアプリによっては画面が固定されていた方が遊びやすくなるものもあると思います。

そこで今回は、端末でアプリを実行した時に、画面の回転を禁止して固定された状態にするための設定について書きたいと思います。(自身の備忘録用でもある)

こんな人におすすめ

・Unityのアプリを制作中
・画面の回転を禁止して固定状態にしたい
・回転方向を2方向(左右のみ)などに限定したい

回転を止めるための設定確認

早速回転を止めるための設定を見ていきます。

Edit → Project Serrings

設定の確認

Player
→ iOSタブ(Androidタブでも可)
→ Resolution and Presentation
→ Default Orientation

設定の確認

※Default Orientationについての解説
Default Orientationは起動時の画面回転方向を決める項目です。iOSまたはAndroidのどちらかにある項目で設定を行えば、もう一つの設定も同一のものが適応されます。

それぞれのパラメーター設定は以下のような意味があります。

Portrait:縦向き
PortraitUpsideDown:縦向きの逆方向
LandscapeLeft:左へ傾けた向き 縦向きから反時計回り
LandscapeRight:右へ傾けた向き 縦向きから時計回り
AutoRotation:使用可能な向きの中で、必要に応じて自動で向きを変更

公式リファレンスページより

単純に一方向で固定したい場合は「Portrait」や横方向の「LandscapeLeft(LandscapeRight)」を使って固定すれば目的は達成できると思います。

「左もしくは右の傾き」のように2方向以上で回転させたい場合は、以下のチェックマークで制御することができます。回転を行いたい方向のみチェックを入れるようにしてみてください。

回転の制御

ゲーム中の任意のタイミングで傾きを制御したい場合は、次の項目のスクリプトを使ってください!

画面回転制御スクリプト(C#)

■一つの方向で制御したい場合

Screen.orientation = ScreenOrientation.Portrait;

ScreenOrientationにenumとしてそれぞれのパラメーター(LandscapeLeftなど)が入っています。以下のようにStartなどで設定すれば、アプリの回転を制御することができます。

ScreenOrientationの設定

■自動回転の時の回転方向を制御したい場合

Screen.autorotateToPortrait = true;
Screen.autorotateToPortraitUpsideDown = true;
Screen.autorotateToLandscapeLeft = false;
Screen.autorotateToLandscapeRight = false;
Screen.orientation = ScreenOrientation.AutoRotation;

こちらもStartなど、任意のタイミングで読み込めば回転方向の制御を変更できるはずです! true設定の方向にのみ回転するようになります。

最後に

以上がUnityで画面回転を禁止する設定や、コードによる制御でした。

デフォルトの設定の場合、自動回転になっていてゲームによってはかなり困ることにもなると思います。しっかり設定を行っておきましょう!

※現在一部の端末で「上下逆さの設定が有効にならないことがある」という現象を確認しています。逆さの設定を使う場合は注意してチェックしてください。