티스토리 뷰
유니티로 작업하다 보면 실행 플랫폼에 따라서 기능이 변화해야 하는 경우가 있다.
대표적인 것이 조작법. 휴대폰과 PC가 조작법이 동일하다면 둘 중 한 곳에서는 제대로 플레이가 불가능할테니 말이다.
그리고 UI도 이에 해당한다. 물론, UI는 플랫폼 보다는 조작체계에 따라서 변화시키는 것이 더 옳겠지만 말이다.
자, 그렇다면 플랫폼을 인식하는 방법을 알아야 할 것이다.
그걸 간단하게 알아보자.
Application.platform
Application은 한번 본 적 있는 패키지일 것이다. 그렇다. '파일 저장'을 다룰 때 나왔던 바로 그 패키지.
UnityEngine.Application은 현재 실행중인 어플리케이션의 정보를 담고 있는 패키지다. '파일'이 아니라 '어플리케이션'이라는 점이 중요하다. 즉, 실행 환경에 따라서 이 패키지가 가지고 있는 정보는 달라진다.
그리고 그건 당연히 '실행 중인 플랫폼의 정보' 또한 포함된다.
그리고 Application.platform은 그 플랫폼의 정보를 담고있는 변수다.
이 Application.platform은 RuntimePlatform이라는 enum값을 가지고 있는데, 그 내용은 아래와 같다.
[참고 URL: https://docs.unity3d.com/kr/530/ScriptReference/Application.html]
- RuntimePlatform: 플랫폼 종류를 구별하기 위한 enum
- OSXEditior : macOS에서의 유니티 에디터
- OSXPlayer : macOS에서의 실행기
- WindowsPlayer : Windows에서의 실행기
- WindowsEditor : Windows에서의 유니티 에디터
- IPhonePlayer : 아이폰
- Android : 안드로이드
- LinuxPlayer : 리눅스에서의 실행기
- LinuxEditor : 리눅스에서의 유니티 에디터
- WebGLPlayer : WebGL에서의 실행기
- WSAPlayerX86 : CPU아키텍쳐가 X86일 때의 Windows Store Apps 상에서의 실행기
- WSAPlayerX64 : CPU아키텍쳐가 X64일 때의 Windows Store Apps 상에서의 실행기
- WSAPlayerARM: CPU아키텍쳐가 ARM일 때의 Windows Store Apps 상에서의 실행기
- PS4 : Play Station 4에서의 실행기
- XboxOne : XboxOne에서의 실행기
- tvOS : 애블의 tvOS에서의 실행기
- Switch : 닌텐도 스위치에서의 실행기
- Stadia : 스태디아에서의 실행기
- PS5 : Play Station 5에서의 실행기
- LinuxServer : 리눅스 서버
- WindowsServer : 윈도우 서버
- OSXServer : macOS 서버
- VisionOS : 비전OS에서의 실행기
다소 길긴 하지만, Android와 IPhonePlayer를 함께 지정한다면 모바일 버전에 대한 예외 항목을 작성할 수 있다.
이외에도 PS4나 XboxOne과 같은 변수를 통해서 콘솔 한정으로 기능을 분화시키는 것도 가능하다.
[주로 컨트롤러 차이에 따른 입력값 차이를 작성할 때 활용할 것으로 보인다.]
참고로, 독점 컨텐츠 같이 '기종에 따라서 가지고 있는 컨텐츠가 달라야 하는 경우'에는 이걸로 작성하면 안된다.
이걸로 했다가는 클라이언트를 뜯어내서 해당 컨텐츠를 꺼내 쓸 수 있기도 하고, 그 만큼 더미 데이터가 늘어나는 셈이라 용량 최적화 상 좋지 않다.
이 경우에는 DLC를 구현하기 위한 기능이 따로 있으니, 그걸 이용해서 특정 플랫폼에만 출시하는 방식으로 구성해야 한다.
'스파르타 내일배움캠프 > Today I Learned' 카테고리의 다른 글
Today I Learned - Day 90(Final) [Readme에 동영상, 이미지 올리기] (0) | 2025.01.21 |
---|---|
Today I Learned - Day 88 [플레이 스토어 출시 준비사항] (0) | 2025.01.17 |
Today I Learned - Day 87 [안드로이드 버전 호환성 대처법] (0) | 2025.01.16 |
Today I Learned - Day 86 [모바일 화면 설정을 해 보자.] (0) | 2025.01.15 |
Today I Learned - Day 85 [UI 내부에서의 마우스 좌표 찾기] (0) | 2025.01.14 |