Unity3D平台依赖编译
Platform Dependent CompilationUnity 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 DefinesThe platform defines that Unity supports for your scripts are:
Also you can compile code selectively depending on the version of the engine you are working on. Currently the supported ones are:
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 Build Settings window with the WebPlayer Selected as Target platform. . This will bring the build settings window to select your target platform.Select the platform you want to test your precompiled code against and press the button 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 a 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 DefinesIt 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 DefinesYou 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:
As an example,if you include the single line “ 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 Symbolsin 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 “ 原文地址点击这里 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |