Unity3d native API 通过 IL2CPP 可行吗?
Is Unity3d native API via IL2CPP feasible?
我正在考虑访问 Unity3d 的本机 API 并可能创建一个包装库以方便人类使用的想法。为此,我目前正在尝试弄清楚在构建期间使用 IL2CPP 标志将 Unity 项目转换为 XCode 项目时到底发生了什么。
我想知道 IL2CPP 将 IL 翻译成 c++ 时的确切过程是什么,为什么项目仍然包含 DLL,最后的编译过程有什么特别之处,例如魔法在哪里发生?
欢迎就所描述目标 (Unity3d c++ API) 的可行性提出任何见解和意见。
PS:
我知道这样的 API 至少可以说是骇人听闻的,是的,我明白,除了 Unity3d 之外还有其他技术允许 c++ 作为第一个 class 公民使用,即 Unreal Engine。这个问题首先是理论上的。那,我也喜欢c++ :)
不,关于 IL2CPP 脚本后端的任何内容都没有公开来自 Unity 的新本地 API。
实际上,这里并没有太多神奇之处。工具链是这样的。
- 使用 Mono 编译器从用户的 Unity 项目中的 C# 代码生成 IL 程序集。
- 从程序集中去除未使用的 IL 以转换为 C++(这有助于我们减少精细代码和二进制大小)。
- 使用 IL2CPP 从 IL 程序集生成 C++ 代码。
- 使用原生平台的 C++ 编译器编译 C++ 代码(Xcode on iOS,Emscripten for WebGL)
使用 Mono 脚本后端和 IL2CPP 脚本后端输出到 iOS Xcode 的唯一区别是 Xcode 项目中包含哪些文件。对于 IL2CPP,包含所有生成的 C++ 文件。
无论您使用哪个脚本后端,Unity 的 API 都是不变的。
我正在考虑访问 Unity3d 的本机 API 并可能创建一个包装库以方便人类使用的想法。为此,我目前正在尝试弄清楚在构建期间使用 IL2CPP 标志将 Unity 项目转换为 XCode 项目时到底发生了什么。
我想知道 IL2CPP 将 IL 翻译成 c++ 时的确切过程是什么,为什么项目仍然包含 DLL,最后的编译过程有什么特别之处,例如魔法在哪里发生?
欢迎就所描述目标 (Unity3d c++ API) 的可行性提出任何见解和意见。
PS: 我知道这样的 API 至少可以说是骇人听闻的,是的,我明白,除了 Unity3d 之外还有其他技术允许 c++ 作为第一个 class 公民使用,即 Unreal Engine。这个问题首先是理论上的。那,我也喜欢c++ :)
不,关于 IL2CPP 脚本后端的任何内容都没有公开来自 Unity 的新本地 API。
实际上,这里并没有太多神奇之处。工具链是这样的。
- 使用 Mono 编译器从用户的 Unity 项目中的 C# 代码生成 IL 程序集。
- 从程序集中去除未使用的 IL 以转换为 C++(这有助于我们减少精细代码和二进制大小)。
- 使用 IL2CPP 从 IL 程序集生成 C++ 代码。
- 使用原生平台的 C++ 编译器编译 C++ 代码(Xcode on iOS,Emscripten for WebGL)
使用 Mono 脚本后端和 IL2CPP 脚本后端输出到 iOS Xcode 的唯一区别是 Xcode 项目中包含哪些文件。对于 IL2CPP,包含所有生成的 C++ 文件。
无论您使用哪个脚本后端,Unity 的 API 都是不变的。