【问题标题】:Can I get the Unity3D engine version in Xcode and how to do a conditional compile based on the version?我可以在 Xcode 中获取 Unity3D 引擎版本以及如何根据版本进行条件编译吗?
【发布时间】:2013-03-21 01:34:48
【问题描述】:

我正在开发适用于 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 编辑器中有一个Platform Dependent Compilation,但是我如何在 Xcode 中获取引擎的版本并进行“基于 Unity 引擎版本的条件编译”?任何建议将不胜感激!

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

【问题讨论】:

    标签: ios xcode compilation unity3d


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 感谢您的回答。不同版本的Unity3D生成的代码是不一样的。我需要为我的插件编写不同的代码取决于 Unity 的版本。所以我认为你的答案是后一种情况。现在我使用两个 Unity 版本之间生成代码的差异来确定它。再次感谢您。
    猜你喜欢
    • 1970-01-01
    • 2018-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-06
    • 2014-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多