unity平台的预处理
2015-06-20 21:59
369 查看
在开发中,特别是unity的跨平台中,我们常常会在各个平台游走,如安卓版,苹果版,PC版......。在此不同的平台上,有可能我们须要做不同的操作。然而我们就能够用unity的自带的平台宏定义方式来做平台的推断。Unity帮我们定义了例如以下平台预处理:
以后我们能够依据如上宏定义就能够去轻而易举的非常easy去在我们代码中增加推断了。我举个简单样例,例如以下:
using UnityEngine;
using System.Collections;
public class Recompile : MonoBehaviour
{
private string platform = string.Empty;
// Use this for initialization
void Start()
{
DebugPlatformMesaage();
}
void DebugPlatformMesaage()
{
#if UNITY_EDITOR
platform = "hi,大家好,我是在unity编辑模式下";
#elif UNITY_XBOX360
platform="hi,大家好,我在XBOX360平台";
#elif UNITY_IPHONE
platform="hi,大家好,我是IPHONE平台";
#elif UNITY_ANDROID
platform="hi,大家好,我是ANDROID平台";
#elif UNITY_STANDALONE_OSX
platform="hi,大家好,我是OSX平台";
#elif UNITY_STANDALONE_WIN
platform="hi,大家好,我是Windows平台";
#endif
Debug.Log("Current Platform:" + platform);
}
}
上面假设我是在Editor状态下的话,就能看见打印出:
我们也能够自定义宏定义,在PlayerSetting中定义:
比如我在上面圈起来的地方填写一个CUSTOM_ITF这个预编译指令。然后在DebugPlatformMesaage函数尾部增加这句话
//新加入的内容
#if CUSTOM_ITF
customMsg = "我自己定义了预编译";
#endif
Debug.Log(customMsg);
然后我们执行看下,你就能在控制台看见我们输出的信息了:
当我们把我们自己定义的宏定义给去掉的时候,我们打印的信息就不会出来。
除了这些,unity中还有各个版本号的宏定义,一般开发插件的大牛都会用到。
|
以后我们能够依据如上宏定义就能够去轻而易举的非常easy去在我们代码中增加推断了。我举个简单样例,例如以下:
using UnityEngine;
using System.Collections;
public class Recompile : MonoBehaviour
{
private string platform = string.Empty;
// Use this for initialization
void Start()
{
DebugPlatformMesaage();
}
void DebugPlatformMesaage()
{
#if UNITY_EDITOR
platform = "hi,大家好,我是在unity编辑模式下";
#elif UNITY_XBOX360
platform="hi,大家好,我在XBOX360平台";
#elif UNITY_IPHONE
platform="hi,大家好,我是IPHONE平台";
#elif UNITY_ANDROID
platform="hi,大家好,我是ANDROID平台";
#elif UNITY_STANDALONE_OSX
platform="hi,大家好,我是OSX平台";
#elif UNITY_STANDALONE_WIN
platform="hi,大家好,我是Windows平台";
#endif
Debug.Log("Current Platform:" + platform);
}
}
上面假设我是在Editor状态下的话,就能看见打印出:
我们也能够自定义宏定义,在PlayerSetting中定义:
比如我在上面圈起来的地方填写一个CUSTOM_ITF这个预编译指令。然后在DebugPlatformMesaage函数尾部增加这句话
//新加入的内容
#if CUSTOM_ITF
customMsg = "我自己定义了预编译";
#endif
Debug.Log(customMsg);
然后我们执行看下,你就能在控制台看见我们输出的信息了:
当我们把我们自己定义的宏定义给去掉的时候,我们打印的信息就不会出来。
除了这些,unity中还有各个版本号的宏定义,一般开发插件的大牛都会用到。
|
相关文章推荐
- 以游戏实例介绍Unity3d
- [Unity3D]如何渲染一个在camera frustum外面的物体
- 【Unity3d】如何解决Unity3d在引用外部插件时报DLLNotFoundException的问题
- Unity3d 反编译破解游戏 简单示例 (使用ildasm反编译DLL修改然后重新编译DLL)
- unity, switch platform
- Unity链表的应用之蛇形动画
- VS community 2013 安装配置Xamarin
- 【Unity3d】疑难杂症解决之系统报错:Supplied NxActorDesc is not valid. createActor returns NULL
- Unity着色器入门之一步一步来看坐标系变换
- Unity下的StreamingAssets路径不同平台的读取
- Unity3D实践系列05,为GameObject添加额外属性
- 关于Fatal Error in GC : Too Many threads
- 解读Unity中的CG编写Shader系列六(漫反射)
- 解读Unity中的CG编写Shader系列五(理论知识)
- 解读Unity中的CG编写Shader系列四(unity中的圆角矩形shader)
- 解读Unity中的CG编写Shader系列三
- 解读Unity中的CG编写Shader系列二
- UnityShader实例04:遮挡透明材质
- 解读Unity中的CG编写Shader系列一
- Unity3d《Shader篇》绘制圆角图片