Unity에서 플랫폼 별 코드 실행: Application.platform vs #if 디렉티브

sonsazang

·

2024. 1. 5. 13:19

Unity 개발 시 다양한 플랫폼을 지원하기 위해 플랫폼 별로 다른 코드 실행이 필요할 때가 있습니다. 이를 위한 주요 두 가지 방법, Application.platform#if 디렉티브를 비교해 보겠습니다.

Application.platform의 사용

Application.platform은 Unity의 런타임 시점에서 현재 실행 중인 플랫폼을 확인하는 방법입니다.

장점

  • 동적 처리: 단일 빌드로 여러 플랫폼에서 다르게 동작하는 앱을 만들 수 있습니다.
  • 코드 포함: 빌드에 모든 플랫폼에 대한 코드가 포함되어, 하나의 빌드로 여러 환경을 대응할 수 있습니다.

사용 예

if (Application.platform == RuntimePlatform.WindowsPlayer) {
    // Windows 전용 코드
} else if (Application.platform == RuntimePlatform.OSXPlayer) {
    // macOS 전용 코드
} else if (Application.platform == RuntimePlatform.IPhonePlayer) {
    // iOS 전용 코드
} // 추가적인 플랫폼 조건들을 계속 추가

#if 디렉티브의 사용

#if 디렉티브는 컴파일 타임에 특정 플랫폼을 대상으로 코드를 포함하거나 제외하는 방법입니다.

장점

  • 컴파일 타임 결정: 특정 플랫폼에 대해서만 코드를 컴파일합니다.
  • 선택적 코드 포함: 불필요한 플랫폼 코드를 제외해 빌드 크기를 최적화할 수 있습니다.

사용 예

#if UNITY_STANDALONE_WIN
    // Windows 빌드에서만 컴파일될 코드
#elif UNITY_STANDALONE_OSX
    // macOS 빌드에서만 컴파일될 코드
#elif UNITY_IOS
    // iOS 빌드에서만 컴파일될 코드
#endif

언제 어떤 방식을 사용해야 할까요?

  • Application.platform 사용: 하나의 코드 베이스로 다양한 플랫폼을 지원해야 하고, 실행 시점에 플랫폼을 기반으로 다른 동작을 수행해야 할 때 적합합니다.
  • #if 디렉티브 사용: 플랫폼별로 다른 빌드를 생성해야 하거나, 특정 플랫폼에 특화된 기능을 구현해야 할 때 유용합니다.

결론

Unity 개발에서 플랫폼 별 코드 실행은 프로젝트의 요구 사항과 타겟 플랫폼에 따라 다르게 접근할 수 있습니다.

각 방식의 장단점을 이해하고 상황에 맞게 선택하여 사용하면, 효율적인 멀티플랫폼 개발이 가능합니다.