Unity3D Platform Dependent Compilation

來源:互聯網
上載者:User

原文地址:http://docs.unity3d.com/Documentation/Manual/PlatformDependentCompilation.html

這個在Unity Editor內建的Manual 裡也有的。

Platform Dependent Compilation

Unity includes a feature named "Platform Dependent Compilation". This consists of some preprocessor directives that let you
partition your scripts to compile and execute a section of code exclusively for one of the supported platforms.

Furthermore, you can run this code within the Editor, so you can compile the code specifically for your mobile/console and test it in the Editor!

Platform Defines

The platform defines that Unity supports for your scripts are:

   
UNITY_EDITOR Define for calling Unity Editor scripts from your game code.
UNITY_STANDALONE_OSX Platform define for compiling/executing code specifically for Mac OS (This includes Universal, PPC and Intel architectures).
UNITY_DASHBOARD_WIDGET Platform define when creating code for Mac OS dashboard widgets.
UNITY_STANDALONE_WIN Use this when you want to compile/execute code for Windows stand alone applications.
UNITY_STANDALONE_LINUX Use this when you want to compile/execute code for Linux stand alone applications.
UNITY_STANDALONE Use this to compile/execute code for any standalone platform (Mac, Windows or Linux).
UNITY_WEBPLAYER Platform define for web player content (this includes Windows and Mac Web player executables).
UNITY_WII Platform define for compiling/executing code for the Wii console.
UNITY_IPHONE Platform define for compiling/executing code for the iPhone platform.
UNITY_ANDROID Platform define for the Android platform.
UNITY_PS3 Platform define for running PlayStation 3 code.
UNITY_XBOX360 Platform define for executing Xbox 360 code.
UNITY_NACL Platform define when compiling code for Google native client (this will be set additionally to
UNITY_WEBPLAYER).
UNITY_FLASH Platform define when compiling code for Adobe Flash.

Also you can compile code selectively depending on the version of the engine you are working on. Currently the supported ones are:

UNITY_2_6 Platform define for the major version of Unity 2.6.
UNITY_2_6_1 Platform define for specific version 1 from the major release 2.6.
UNITY_3_0 Platform define for the major version of Unity 3.0.
UNITY_3_0_0 Platform define for the specific version 0 of Unity 3.0.
UNITY_3_1 Platform define for major version of Unity 3.1.
UNITY_3_2 Platform define for major version of Unity 3.2.
UNITY_3_3 Platform define for major version of Unity 3.3.
UNITY_3_4 Platform define for major version of Unity 3.4.
UNITY_3_5 Platform define for major version of Unity 3.5.
UNITY_4_0 Platform define for major version of Unity 4.0.
UNITY_4_0_1 Platform define for major version of Unity 4.0.1.
UNITY_4_1 Platform define for major version of Unity 4.1.

Note: For versions before 2.6.0 there are no platform defines as this feature was first introduced in that version.

Testing precompiled code.

We are going to show a small example of how to use the precompiled code. This will simply print a message that depends on the platform you have selected to build your target.

First of all, select the platform you want to test your code against by clicking on
File -> Build Settings. This will bring the build settings window to select your target platform.


Build Settings window with the WebPlayer Selected as Target platform.

Select the platform you want to test your precompiled code against and press the
Switch Editor button to tell Unity which platform you are targeting.

Create a script and copy/paste this code:

JavaScript Example:

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_OSXDebug.Log("Stand Alone OSX");    #endif    #if UNITY_STANDALONE_WIN      Debug.Log("Stand Alone Windows");    #endif  }   }

Boo Example:

import UnityEngineclass 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")

Then, depending on which platform you selected, one of the messages will get printed on the Unity console when you press play.

In addition to the basic #if compiler directive, you can also use a multiway test in C# and JavaScript:-

#if UNITY_EDITOR    Debug.Log("Unity Editor");#elif UNITY_IPHONE    Debug.Log("Unity iPhone");#else    Debug.Log("Any other platform");#endif

However, Boo currently supports only the ifdef directive.

Custom defines

It is also possible to add to the built-in selection of defines by supplying your own. In the
Other Settings panel of the
Player Settings, you will see the Scripting Define Symbols textbox.

Here, you can enter the names of the symbols you want to define for that particular platform, separated by semicolons. These symbols can then be used as the conditions for
#if directives just like the built-in ones.

Page last updated: 2013-03-14

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.