通过IL2CPP的Unity3d原生API是否可行?

时间:2015-03-27 09:27:16

标签: c++ unity3d il2cpp

我正在考虑访问Unity3d的本机API,并可能创建一个包装库,以方便人类使用。为此,我目前正在尝试弄清楚在使用IL2CPP标志的构建期间将Unity项目转换为XCode项目时究竟发生了什么。

我想知道IL2CPP将IL转换为c ++时的确切过程是什么,为什么项目仍然包含DLL,并且最终编译过程有什么特别之处,例如:神奇的发生在哪里?

欢迎任何有关所述目标(Unity3d c ++ API)可行性的见解和意见。

PS: 我知道这样的API至少可以说是hackish,我确实理解,除了Unity3d之外还有其他技术允许c ++用作一等公民,即虚幻引擎。这个问题首先是理论上的问题。那,我也喜欢c ++:)

1 个答案:

答案 0 :(得分:2)

不,IL2CPP脚本后端没有任何内容从Unity公开新的原生API。

实际上,这里确实没有太多的魔法。工具链就是这样的。

  1. 使用Mono编译器从用户的Unity项目中的C#代码生成IL程序集。
  2. 从程序集中删除未使用的IL以转换为C ++(这有助于我们减少精细代码和二进制文件大小)。
  3. 使用IL2CPP从IL程序集生成C ++代码。
  4. 使用适用于本机平台的C ++编译器编译C ++代码(iOS上为Xcode,WebGL为Emscripten)
  5. 使用Mono脚本后端和IL2CPP脚本后端ouptut与Xcode for iOS之间的唯一区别是Xcode项目中包含哪些文件。对于IL2CPP,包含了所有生成的C ++文件。

    无论您使用哪种脚本后端,Unity的API都保持不变。