반응형

1. Unity에서 화면을 고정하는 방법 (화면 방향 고정)

Unity에서는 화면 방향을 특정 방향으로 고정할 수 있습니다.

방법 1: Player Settings에서 설정 (정적인 방식)

  1. EditProject SettingsPlayer로 이동
  2. Resolution and Presentation 탭에서 Default Orientation 설정 변경
    • Portrait (세로 모드)
    • Portrait Upside Down (뒤집힌 세로 모드)
    • Landscape Left (가로 모드, 카메라가 왼쪽인 상태)
    • Landscape Right (가로 모드, 카메라가 오른쪽인 상태)
    • Auto Rotation (자동 회전)
  3. Auto Rotation 선택 시, 원하는 방향을 활성화/비활성화 가능

설정위치

 

#저는 이번 프로젝트가 가로모드로만 작동하는 방식이라서 카메라가 왼쪽일 경우 오른쪽일 경우의 가로모드만 체크하였습니다.

 

방법 2: 코드로 화면 방향 고정 (동적인 방식)

게임 내에서 특정 씬에서만 화면 방향을 바꾸려면 C# 코드로 설정할 수 있습니다.

using UnityEngine;

public class ScreenOrientationController : MonoBehaviour
{
    void Start()
    {
        // 세로 화면 고정
        Screen.orientation = ScreenOrientation.Portrait;

        // 또는 가로 화면 고정
        // Screen.orientation = ScreenOrientation.LandscapeLeft;
    }
}
 

위 스크립트를 특정 씬에서 사용하면 해당 씬에서는 설정된 방향으로 고정됩니다.


2. 씬마다 가로/세로 변경하는 방법 (동적 변경)

씬이 변경될 때마다 화면 방향을 변경하고 싶다면 SceneManager.sceneLoaded 이벤트를 활용할 수 있습니다.

씬 변경 시 자동으로 화면 방향 바꾸기

using UnityEngine;
using UnityEngine.SceneManagement;

public class OrientationManager : MonoBehaviour
{
    void Awake()
    {
        // 씬이 로드될 때마다 호출
        SceneManager.sceneLoaded += OnSceneLoaded;
    }

    void OnSceneLoaded(Scene scene, LoadSceneMode mode)
    {
        // 씬 이름 또는 인덱스에 따라 화면 방향 변경
        if (scene.name == "MainMenu")  
        {
            Screen.orientation = ScreenOrientation.Portrait;  // 세로 모드
        }
        else if (scene.name == "GameScene")
        {
            Screen.orientation = ScreenOrientation.LandscapeLeft;  // 가로 모드
        }
    }

    void OnDestroy()
    {
        // 이벤트 해제 (메모리 누수 방지)
        SceneManager.sceneLoaded -= OnSceneLoaded;
    }
}

설명

  • SceneManager.sceneLoaded를 사용해 씬이 로드될 때마다 자동으로 화면 방향을 변경
  • 특정 씬에서는 세로(Portrait), 다른 씬에서는 가로(LandscapeLeft)로 설정 가능

이렇게 하면 각 씬에 맞춰 자동으로 화면 방향이 변경됩니다.

 

반응형

+ Recent posts