微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

unity Platform Dependent Compilation平台依赖编译

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


Unity3D通过预编译指令实现分平台编译(翻译)


Unity的这一功能被命名为依赖于平台的编译。这包含了一些预编译处理指令,让你可以专门的针对不同的平台分开编译和执行一段代码

此外,你可以在编辑器下执行一些代码用于测试而不影响你编译到手机或者其他平台的代码

平台定义:

对您的脚本支持的平台定义有:

UNITY_EDITOR

用于执行UnityEditor模式下的脚本的定义.

UNITY_STANDALONE_OSX

用于编译和执行专门针对Mac OS代码的平台定义.

UNITY_DASHBOARD_WIDGET

为创建Dashboard widget工具的代码的平台定义.

UNITY_STANDALONE_WIN

专门为Windows的独立应用程序编译/执行代码的平台定义.

UNITY_STANDALONE_LINUX

专门为Linux的独立应用程序编译/执行代码的平台定义.

UNITY_STANDALONE

为任何平台的独立应用程序编译/执行代码的平台定义包括WindowsMacLinux.

UNITY_WEBPLAYER

网页播放器的内容的平台定义(包括WindowsMacWeb播放器的可执行文件).

UNITY_WII

专门为Wii游戏机编译和执行代码的平台定义.

UNITY_IPHONE

iPhone平台的编译和执行代码的平台定义.

UNITY_ANDROID

为安卓平台的编译和执行代码的平台定义.

UNITY_ps3

ps3编译和执行代码的平台定义.

UNITY_XBox360

XBox360编译和执行代码的平台定义.

UNITY_NACL

为谷歌客户端编译和执行代码的平台定义.(这是对UNITY_WEBPLAYER的补充).

UNITY_FLASH

AdobeFlash编译和执行代码的平台定义.

你也可以为了区分引擎的不同版本有选择的编译代码.

目前支持的是:

UNITY_2_6

Unity 2.6的平台定义.

UNITY_2_6_1

Unity 2.6.1的平台定义.

UNITY_3_0

Unity 3.0的平台定义.

UNITY_3_0_0

Unity 3.0.0的平台定义.

UNITY_3_1

Unity 3.1的平台定义..

UNITY_3_2

Unity 3.2的平台定义.

UNITY_3_3

Unity 3.3的平台定义.

UNITY_3_4

Unity 3.4的平台定义.

UNITY_3_5

Unity 3.5的平台定义.

UNITY_4_0

Unity 4.0的平台定义.

UNITY_4_0_1

Unity 4.0.1的平台定义.

UNITY_4_1

Unity 4.1的平台定义.







原文:

Platform Dependent Compilation

Unity includes a feature named “Platform Dependent Compilation”. This consists of some preprocessor directives that let youpartitionyour 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:

Property: Function:
UNITY_EDITOR Define for calling Unity Editor scripts from your game code.
UNITY_EDITOR_WIN Platform define for editor code on Windows.
UNITY_EDITOR_OSX Platform define for editor code on Mac OSX.
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_FLASH Platform define when compiling code for Adobe Flash.
UNITY_BLACKBerry Platform define for a BlackBerry10 device.
UNITY_WP8 Platform define for Windows Phone 8.
UNITY_METRO Platform define for Windows Store Apps (additionallyNETFX_COREis defined when compiling C# files against .NET Core).
UNITY_WINRT Equivalent toUNITY_WP8|UNITY_METRO

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 2.6.1.
UNITY_3_0 Platform define for the major version of Unity 3.0.
UNITY_3_0_0 Platform define for specific version 3.0.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 specific version 4.0.1.
UNITY_4_1 Platform define for major version of Unity 4.1.
UNITY_4_2 Platform define for major version of Unity 4.2.
UNITY_4_3 Platform define for major version of Unity 4.3.
UNITY_4_5 Platform define for major version of Unity 4.5.

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 onFile->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 theSwitch Editorbutton to tell Unity which platform you are targeting.

Create a script and copy/paste this code:-

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


// C#
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

    "Stand Alone OSX");
    #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")

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

Note that in C# you can use aCONDITIONALattribute which is a more clean,less error-prone way of stripping out functions,seehttp://msdn.microsoft.com/en-us/library/4xssyw96(v=vs.90).aspx.

In addition to the basic#ifcompiler 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 theifdefdirective.

Platform Custom Defines

It is also possible to add to the built-in selection of defines by supplying your own. In theOther Settingspanel of thePlayer 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#ifdirectives just like the built-in ones.

Global Custom Defines

You can define your own preprocessor directives to control which code gets included when compiling. To do this you must add a text file with the extra directives to the “Assets/” folder. The name of the file depends on the language you are using,and the extension is.rsp:

C#
<Project Path>/Assets/smcs.rsp
C# - Editor Scripts <Project Path>/Assets/gmcs.rsp
UnityScript <Project Path>/Assets/us.rsp
Boo <Project Path>/Assets/boo.rsp

As an example,if you include the single line “-define:UNITY_DEBUG” in yoursmcs.rspfile the defineUNITY_DEBUGwill exist as a global define for C# scripts,except for Editor scripts.

Every time you make changes to .rsp files you will need to recompile for them to be effective. You can do this by updating or reimporting a single script (.js,.cs or .boo) file.

If you want to modify only global defines,you should useScripting Define SymbolsinNow when one or another compiler is used.

The use of the .rsp files is described in the help section of thesmcsapplication which is included in the Editor installation folder. You can get more information by running “smcs -help”. Also,bear in mind the .rsp file needs to match the compiler being invoked. For example,when targeting the web player,smcsis used with smcs.rsp; when targeting standalone players,gmcsis used with gmcs.rsp; when targeting MS compiler,cscis used with csc.rsp; and so on.

原文地址:https://www.jb51.cc/javaschema/285219.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐