1

我正在为 iOS 开发 Unity3D 中的插件。出于某种原因,我需要在本机代码(Xcode 中的.mm)中指定一些代码在 Unity3D 4.1 之前编译,而其他代码在 Unity3D 4.1(包括)之后编译。也许是这样的:

#if UNITY_VERSION < UNITY_4_1
    //Some code be compiled before Unity4.1
#else
    //Some code for new version
#endif

我知道 Unity3D 编辑器中有一个平台相关编译,但是如何在 Xcode 中获取引擎的版本并进行“基于 Unity 引擎版本的条件编译”?任何建议将不胜感激!

编辑:也许我可以为不同的版本编写两个 .mm 文件并在[PostProcessAttribute]中删除其中一个。但我不认为这是一个好主意...

4

1 回答 1

0

目前还不清楚您要做什么。您是否通过注入 Unity 创建的 XCode 项目来构建您的本机代码?或者您是否将本机代码构建到 Unity 在构建期间包含的库中?

AFAIK 如果不检查 Unity 的安装并找出确定的方法,XCode 无法提前知道您正在使用哪个版本的 Unity。

如果您执行后者,即构建包含在 Unity 构建中的本机代码库。在这种情况下,您将需要两个单独的库,并指示用户包含任何一个相关的库。

如果您正在执行前者,即将新的本地代码注入 Unity 创建的 XCode 项目,那么 Unity 会导出 #defines,这样您就可以确定您的本地代码需要针对哪个版本的 Unity 进行编译。

于 2013-05-03T19:33:36.947 回答