티스토리 뷰

유니티로 작업하다 보면 실행 플랫폼에 따라서 기능이 변화해야 하는 경우가 있다.

대표적인 것이 조작법. 휴대폰과 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를 구현하기 위한 기능이 따로 있으니, 그걸 이용해서 특정 플랫폼에만 출시하는 방식으로 구성해야 한다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함