플렛폼에 따른 컴파일

유니티는 "Platform Dependent Compilation"라는 기능을 포함합니다. 이것은 사용자가 하나의 지원되는 플랫폼을 위한 코드를 컴파일하고 실행하기 위해서 자신의 스크립트를 나누게 해주는 전처리 프로세서로 이루어져 있습니다.

또한 에디터에서 이 코드를 실행시킬 수 있으므로 사용자는 모바일/콘솔을 위한 코드를 컴파일할 수 있고 에디터에서 테스트 할수 있습니다!

플랫폼을 정의합니다 플랫폼은 사용자 스크립트를 위해 유니티가 지원하는 것을 정의 합니다:

UNITY_EDITOR 사용자 게임 코드에서 유니티 에디터를 부르기위해 정의.
UNITY_STANDALONE_OSX 맥 OS의 코드 컴파일/실행을 위한 플랫폼 정의(이것은 Universal, PPC와 Intel architecture를 포함합니다).
UNITY_DASHBOARD_WIDGET 맥 OS의 dashboard widget코드 생성때 플랫폼 정의.
UNITY_STANDALONE_WIN 윈도우즈 독립 실행형 프로그램 코드 컴파일 실행할 때 사용.
UNITY_WEBPLAYER 웹 플레이어 내용을 위한 플랫폼 정의(이것은 윈도우즈 웹플레이어를 포함합니다).
UNITY_WII Will 콘솔 코드의 컴파일 실행을 위한 플랫폼 정의.
UNITY_IPHONE 아이폰 코드의 컴파일과 실행을 위한 플랫폼 정의.
UNITY_ANDROID 안드로이드 플랫폼을 위한 플랫폼 정의.
UNITY_PS3 플레이 스테이션 3코드를 위한 플랫폼 정의.
UNITY_XBOX360 Xbox 360코드 실행을 위한 플랫폼 정의.

_주의:_ 위 정의는 버전 3.0에서 도입되었습니다.

또한 사용자는 작업중인 엔진의 버전에 따라 코드를 선택적으로 컴파일 할 수 있습니다. 현재 지원되는 것은:

UNITY_2_6 유니티 주 버전 2.6의 플랫폼 정의.
UNITY_2_6_1 유니티 주 버전 2.6 특정 버전1의 플랫폼 정의.
UNITY_3_0 유니티 주 버전 3.0의 플랫폼 정의.
UNITY_3_0_0 유니티 버전 3.0의 특정 버전 0의 플랫폼 정의.
UNITY_3_1 유니티 버전 3.1의 특정 버전 0의 플랫폼 정의.
UNITY_3_2 유니티 버전 3.2의 특정 버전 0의 플랫폼 정의.
UNITY_3_3 유니티 버전 3.3의 특정 버전 0의 플랫폼 정의.
UNITY_3_4 유니티 버전 3.4의 특정 버전 0의 플랫폼 정의.

_주의:_ 2.6.0이전 버전에선 플랫폼 정의가 있지 않은데 이 버전에서 처음으로 도입되었기 때문 입니다.

전컴파일 코드 테스트.

어덯게 컴파일 되기 전의 코드를 사용할 수 있는지에대한 작은 예제를보여드를 것입니다. 이것은 사용자가 빌드하기 위한 플랫폼에 따라 간단하게 메세지를 프린트합니다.

무엇보다도 File _→_ Build Settings를 눌러 코드를 테스트하고 싶은 플랫폼을 선택합니다. 이것은 목표 플랫폼을 선택하기위해 빌드 세팅 윈도우를 띄울 것입니다.


WebPlaye가 목표 플랫폼으로 선택된 빌드 세팅 윈도우

컴파일 되기 전의 코드를 테스트하기 위한 플랫폼을 선택하고 Switch Editor 버튼을 눌러 유니티에게 어떤 플랫폼을 목표로하는지 알려주세요.

스크립트를 생성하고 이 코드를 복세/붙여넣기 하세요:

JavaScript 예제:

function Awake() {
  #if UNITY_EDITOR
    Debug.Log("Unity Editor");
  #endif
 
  #if UNITY_IPHONE
    Debug.Log("Iphone");
  #endif
 
  #if UNITY_STANDALONE_OSX
    Debug.Log("Stand Alone OSX");
  #endif
 
  #if UNITY_STANDALONE_WIN
    Debug.Log("Stand Alone Windows");
  #endif	
}

C# Example:

using UnityEngine;
using System.Collections;
 
public class PlatformDefines : MonoBehaviour {
  void Start () {
 
    #if UNITY_EDITOR
      Debug.Log("Unity Editor");
    #endif
 
    #if UNITY_IPHONE
      Debug.Log("Iphone");
    #endif
 
    #if UNITY_STANDALONE_OSX
	Debug.Log("Stand Alone OSX");
    #endif
 
    #if UNITY_STANDALONE_WIN
      Debug.Log("Stand Alone Windows");
    #endif
 
  }			   
}

Boo 예제:

import UnityEngine
 
class PlatformDefines (MonoBehaviour): 
 
	def Start ():
		ifdef UNITY_EDITOR:
			Debug.Log("Unity Editor")
 
		ifdef UNITY_IPHONE:
			Debug.Log("IPhone")
 
		ifdef UNITY_STANDALONE_OSX:
			Debug.Log("Stand Alone OSX")
 
		ifdef not UNITY_IPHONE:
			Debug.Log("not an iPhone")

그러면 선택한 플랫폼에 따라 플레이가 눌리면 유니티 콘솔에 메세지중 하나가 프린트 될 것입니다.

역링크