1

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

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

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

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

4

1 回答 1

2

不,IL2CPP 脚本后端没有公开 Unity 的新原生 API。

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

  1. 使用 Mono 编译器从用户 Unity 项目中的 C# 代码生成 IL 程序集。
  2. 从程序集中剥离未使用的 IL 以转换为 C++(这有助于我们减少精细代码和二进制大小)。
  3. 使用 IL2CPP 从 IL 程序集生成 C++ 代码。
  4. 使用原生平台的 C++ 编译器编译 C++ 代码(iOS 上的 Xcode,WebGL 的 Emscripten)

使用 Mono 脚本后端和 IL2CPP 脚本后端输出到 Xcode for iOS 之间的唯一区别是 Xcode 项目中包含哪些文件。对于 IL2CPP,包含所有生成的 C++ 文件。

无论您使用哪个脚本后端,Unity 的 API 都不会改变。

于 2015-03-27T12:09:12.450 回答