C++ 通过IL2CPP实现Unity3d本机API可行吗?

C++ 通过IL2CPP实现Unity3d本机API可行吗?,c++,unity3d,il2cpp,C++,Unity3d,Il2cpp,我正在考虑访问Unity3d的本机API,并可能创建一个包装器库以便于人类使用。为了做到这一点,我目前正试图弄清楚,在IL2CPP标志打开的构建过程中,当Unity项目转换为XCode项目时,会发生什么 我想知道当IL2CPP将IL转换成C++时,确切的过程是什么,为什么项目仍然包含DLL,并且在最后的编译过程中有什么特殊的地方吗?例如:魔术发生在哪里? P>对所描述目标(UNITY3D C++ ++ API)的可行性有任何见解和意见。 附言: 我明白,这样的API至少可以说是一种黑客行为,是

我正在考虑访问Unity3d的本机API,并可能创建一个包装器库以便于人类使用。为了做到这一点,我目前正试图弄清楚,在IL2CPP标志打开的构建过程中,当Unity项目转换为XCode项目时,会发生什么

我想知道当IL2CPP将IL转换成C++时,确切的过程是什么,为什么项目仍然包含DLL,并且在最后的编译过程中有什么特殊的地方吗?例如:魔术发生在哪里? <> P>对所描述目标(UNITY3D C++ ++ API)的可行性有任何见解和意见。 附言:
我明白,这样的API至少可以说是一种黑客行为,是的,我确实明白,除了UnyTy3D之外,还有其他技术允许C++使用为一流公民,即虚幻引擎。这个问题首先是理论性的。这,我也喜欢C++:

不,IL2CPP脚本后端没有公开统一的新原生API。 实际上,这里并没有太多的魔法。工具链是这样的

  • 使用Mono编译器从用户Unity项目中的C#代码生成IL程序集
  • 从程序集中删除未使用的IL,转换为C++(这有助于减少精细代码和二进制大小)。 < LI>使用IL2CPP从IL程序集生成C++代码。< /LI>
  • 编译C++ C++代码为本地平台(iOS上的xCODE,Engeston为WebGL)
  • 使用Mono脚本后端与iOS的IL2CPP脚本后端ouptut to Xcode的唯一区别在于Xcode项目中包含哪些文件。对于IL2CPP,所有生成的C++文件都包含在内。

    不管使用哪种脚本后端,统一的API都没有变化。

    所以,它基本上将整个Unity引擎和用户脚本转换成C++?我认为unity在内部是基于c++的引擎,而c#只是一种脚本语言。是否可以以某种自定义方式使用生成的类型?在示例中,实例化C++类或其他统一类的转换类的实例?IL2CPP对该代码没有任何影响。它将把任何IL代码(通常从C语言)转换成C++。更准确的说,IL2CPP只将用户脚本转换为C++。在生成的C++代码中使用类型并不容易,因为生成的代码并不意味着可扩展。例如,对脚本代码的更改可能会以意外的方式更改生成代码中的类型名称。经过进一步思考-转换后的用户脚本如何与底层unity engine交互?如果我们能够得到生成的用户脚本所使用的统一类型的接口,那么就有一个C++理论API,它可以在理论上被使用。统一引擎中的托管代码与用户脚本一起被IL2CPP转换。因此Unity引擎没有稳定的API。我想可以使用Unity引擎管理程序集生成的C++代码,但这不是Unity支持的。通过il2cpp.exe(每个版本都会发生)对代码生成进行轻微更改,很容易破坏您将使用的Unity engine API。