본문 바로가기
유니티 & C#

유니티 모바일 <가로모드 / 세로모드> 빌드, 런타임 시점에 코드로 컨트롤하기

by 17번 일개미 2023. 11. 15.
728x90

유니티에서 가로모드와 세로모드를 컨트롤 하는 시점은 2가지 있다.

 

1. 빌드 시점에 Fix 하기

2. 런타임에 특정 상황에서 Edit 하기

 

PlayerSetting 에서 컨트롤 되는 부분은 다음과 같다.

직접 체크해도 되지만 코드로 접근해 보겠다.

 

 

 


 

먼저, 빌드 시점에 변경하는 방법이다.

이 방법은 애초에 빌드가 해당 옵션으로 뽑히게 된다.

즉, 앱 실행 시 자동으로 지정한 방향으로 플레이가 시작된다.

접근 방법은 다음과 같다.

 

가로모드 일 경우 : 잘된 예시

가로모드는 일반적으로 Auto 로 설정한 후에

LandscapeLeft , Right 를 true 로 해준다.

가로로 돌아간 상태에서 휴대폰을 뒤집으면 해당 방향으로 자동회전 되는 것이 일반적으로 많이 쓰이는 방법이다.

특이하게 한쪽으로만 고정하고 싶다면 Left, Right 중 하나만 켜주면 된다.

 

하나 주의할 점은 아래다.

가로모드 일 경우 : 잘못된 예시

같은 코드 지만 배치순서가 조금 달라졌다.

하지만 이 순서 때문에 PlayerSettings 에서 옵션이 제대로 토글되지 않는 경우가 생긴다.

엔진 상 버그로 추측된다.

Portrait 관련 옵션은 후순위로 꺼주도록 하자.

 

세로모드 일 경우

 

세로모드는 Portrait 로 설정한다.

가로 설정 때와 순서가 조금 다르다. 아래 에러 때문에 이렇게 설정하였지만, 어떻게 하든 해당 에러는 발생한다.

PlayerSettings.defaultInterfaceOrientation 을 먼저 건드려주면,

나머지 Auto 와 관련된 옵션들이 꺼진다는 경고성 에러가 발생한다.

어떻게 호출하든 발생하는 것을 보면 엔진상에서 경고 측면으로 띄워주거나 엔진 버그일 것이다. 별로 중요하진 않다.

 

해당 라인을 응용하면, 커스텀한 빌드 시퀀스를 구축할 때,

프로젝트가 아직 가로 / 세로가 정해지지 않아 두 느낌을 모두 보기 위해 빌드를 2종류로 뽑아야 할 때

커스텀 윈도우 기능에 포함시켜 좀 더 간편하게 만들 수 있다.

아래는 본인이 만든 커스텀 빌드 윈도우의 예시이다.

 


 

런타임에 접근하는 방법이다.

 

 

호출 클래스만 다를 뿐 구조가 동일하다.

충분히 응용이 가능하므로 이하 설명은 생략.

728x90