Unity区分平台编译
来源:互联网 发布:高端的社交软件 编辑:程序博客网 时间:2024/06/05 18:42
Platform Defines
The 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.
You can also use the DEVELOPMENT_BUILD define to identify whether your script is running in a player which was built with the “Development Build” option enabled.
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:-
// JSfunction 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#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 } }
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 CONDITIONAL
attribute 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 #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
Platform Custom Defines
It is also possible to add to the built-in selection of defines by supplying your own. In theOther 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.
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:
As an example, if you include the single line “-define:UNITY_DEBUG
” in yoursmcs.rsp file the define UNITY_DEBUG
will 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 or .cs) file.
If you want to modify only global defines, you should use Scripting Define Symbols in Player Settings, because this will cover all the compilers. If you choose the .rsp files instead, you’ll have to provide one file for every compiler Unity uses, and you won’t know when one or another compiler is used.
The use of the .rsp files is described in the help section of the smcs application 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,smcs is used with smcs.rsp; when targeting standalone players, gmcs is used with gmcs.rsp; when targeting MS compiler, csc is used with csc.rsp; and so on.
- Unity区分平台编译
- Unity 平台区分
- unity防反编译 windows平台加密dll
- Unity平台的预处理及依赖于平台的编译
- unity Platform Dependent Compilation(平台依赖编译)
- 【Unity】防反编译之windows平台加密dll
- QML下平台区分
- 苹果系列:跨平台编译的宏定义选择(区分ios和mac)
- Unity3D如何区分平台类型
- Unity 打包至Android 平台 编译不通过 所遇到过的坑
- Unity 点击屏幕与UGUI的区分
- 关于怎么样 使得unity 炮弹区分敌我
- Unity平台宏定义
- unity平台的预处理
- unity 平台检测
- unity平台的预处理
- unity平台的预处理
- unity 平台控制宏
- 【应用篇】Activiti监听与业务颗粒结合的简单应用(三)
- OC笔记,数组NSArray
- 网络拓扑简析
- sockaddr_in和sockaddr简介
- 常用的C++库总结
- Unity区分平台编译
- 浏览器返回刷新页面
- STL容器之deque
- Google NFC Basics (谷歌官网NFC翻译)
- 开始写博客
- #pragma mark - TableView Optional Methods - (void)tableView:(UITableView *)tableView didSelectRowAt
- Linux LVM逻辑卷配置过程详解
- UML中几种类间关系:继承、实现、依赖、关联、聚合、组合的联系与区别
- Android基础知识:Gradle Introduce And Features