Unity3D 判断所在平台(包括editor)
来源:互联网 发布:江汉大学网络管理系统 编辑:程序博客网 时间:2024/05/29 15:46
依赖于平台的编译
Unity包含一个称为Platform Dependent Compilation的功能。这包含一些预处理器指令,可让您对脚本进行分区,以便为受支持的平台之一专门编译和执行一段代码。
你可以在Unity编辑器中运行这个代码,这样你就可以专门为你的目标平台编译代码并在编辑器中测试它!
平台#define指令
Unity支持的平台#define指令如下:
从Unity 2.6.0开始,你可以有选择地编译代码。可用的选项取决于您正在编辑的编辑器的版本。给定版本号XYZ(例如,2.6.0),Unity公开以下格式的三个全局#define指令:UNITY_X,UNITY_X_Y和UNITY_X_Y_Z。
下面是在Unity 5.0.1中公开的#define指令的一个例子:
从Unity 5.3.4开始,您可以根据Unity编译或执行给定代码所需的最早版本的Unity来选择性地编译代码。给定与上述(XYZ)相同的版本格式,Unity 将以UNITY_X_Y_OR_NEWER格式公开一个全局#define ,可用于此目的。
受支持的#define指令是:
您可以使用DEVELOPMENT_BUILD #define来确定脚本是否在使用“Development Build”选项启用的播放器中运行。
您也可以根据脚本后端选择性地编译代码。
测试预编译的代码
以下是如何使用预编译代码的示例。它会打印一条消息,这取决于您为目标版本选择的平台。
首先,通过转到文件>构建设置,选择您要测试代码的平台。这将显示Build Settings窗口; 从这里选择你的目标平台。
建立设置窗口,选择PC,Mac和Linux作为目标平台选择要测试预编译代码的平台,然后单击“ 切换平台”,以告知Unity您定位的是哪个平台。
创建一个脚本并复制/粘贴以下代码:
// 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_IOS Debug.Log("Iphone"); #endif #if UNITY_STANDALONE_OSX Debug.Log("Stand Alone OSX"); #endif #if UNITY_STANDALONE_WIN Debug.Log("Stand Alone Windows"); #endif } }
要测试代码,请单击“ 播放模式”。通过检查Unity控制台中的相关消息来确认代码的工作原理,具体取决于您选择的平台 - 例如,如果选择iOS,消息“Iphone”将设置为显示在控制台中。
请注意,在C#中,你可以使用一个CONDITIONAL
属性,这是一个更干净,更不容易出错的剥离函数的方式。请参阅http://msdn.microsoft.com/en-us/library/4xssyw96(v=vs.90).aspx以获取更多信息。
除了基本的#if
编译器指令之外,还可以在C#和JavaScript中使用多路测试:
#if UNITY_EDITOR Debug.Log("Unity Editor");#elif UNITY_IOS Debug.Log("Unity iPhone");#else Debug.Log("Any other platform");#endif
平台自定义#defines
也可以通过提供自己的内容来添加到#define指令的内置选择中。打开“ 播放器设置”的“ 其他设置”面板,然后导航到“ 脚本定义符号”文本框。
输入要为特定平台定义的符号的名称,用分号分隔。这些符号可以作为#if
指令的条件,就像内置的符号一样。
全球定制#定义
您可以定义自己的预处理器指令来控制在编译时包含哪些代码。要做到这一点,你必须添加一个文本文件与额外的指令到资产文件夹。文件的名称取决于您使用的语言。扩展名是.rsp:
例如,如果-define:UNITY_DEBUG
在mcs.rsp文件中包含单行,#define伪指令将UNITY_DEBUG
作为C#脚本的全局#define存在,编辑器脚本除外。
每次您对.rsp文件进行更改时,都需要重新编译以使其生效。您可以通过更新或重新导入单个脚本(.js或.cs)文件来完成此操作。
注意
如果你想修改全球唯一#define指令,使用脚本定义符号在播放器设置,因为这涵盖了所有的编译器。如果您选择.rsp文件,则需要为Unity使用的每个编译器提供一个文件,而您不知道何时使用了一个或另一个编译器。
编辑器安装文件夹中包含的mcs应用程序的“帮助”部分描述了.rsp文件的使用。您可以通过运行获得更多信息。mcs -help
请注意.rsp文件需要匹配被调用的编译器。例如:
- 当瞄准任何玩家或编辑器时,mcs被用于
mcs.rsp
和 - 靶向MS编译器时,CSC使用具有
csc.rsp
等
- Unity3D 判断所在平台(包括editor)
- Unity3D 判断所在平台
- Unity3D判断当前所在平台
- Unity3D判断当前所在平台
- Unity3D判断当前所在平台
- Unity3d判断当前编译平台
- Unity3D各平台路径(包括手机内置存储路径、SD卡等等)
- unity3d editor splitview
- Unity3D 自定义 Editor 扩展
- unity3d 移动平台使用的网络环境判断(是否联网、是否wifi)
- 【Editor】 Unity3D Editor 编辑器简易教程
- Unity3D Editor 编辑器简易教程
- Unity3D Editor 编辑器简易教程
- Unity3D Editor 编辑器简易教程
- 【Unity3D Editor】GUI参数问题
- js判断IE浏览器(包括IE11)
- 字符串组合(包括去重判断)
- javascript年月日时间(包括判断闰年)
- 676. Implement Magic Dictionary
- logstash使用之输入阶段和过滤阶段处理数据的区别
- android 视频播放---------利用android原生的videoview
- js获取当前时间
- C++中的mutable关键字
- Unity3D 判断所在平台(包括editor)
- 设置——提示音和通知——铃声音量,播放时按HOME键或返回键,播放不停止
- python基本语法
- Android源码基础解析之HOME事件流程
- ubuntu安装
- 循环、递归、遍历、迭代的区别
- 集群配置台数
- python中argparse模块用法实例详解
- 更改svn的登陆账号