0

Unity3D 使用 Mono 将代码编译为纯中间语言以实现交叉兼容性(如果我错了,请纠正我)。PhysX 包含本机代码,其中一些无法在纯托管代码 (/clr:pure) 中表示。

我知道您不能将 ijw/native 模块与纯模块链接;您不能以纯模式链接本机目标文件。然而,Unity3D 似乎通过包含 PhysX 解决了这个问题。如何?

除了通过 Unity 和 PhysX 合作的可能的特殊构建之外,我找不到任何可以解释这一点的资源:Unity3D 如何在不需要 PhysX 运行时的情况下使用 PhysX?

4

1 回答 1

3

Mono 和 .NET 允许用户通过调用外部库来调用本机 C/C++ 代码。

Unity 有一个名为 IL2CPP 的系统,它采用中间单声道语言并将其转换为 C++(或通过 emscripten 构建 webgl 的 asm.js)。这就是 Unity 编译到 iOS 的方式。所有 C#/Unityscript/Boo 代码都转换为 C/C++/Obj-C,然后将其包含到 XCode 项目中,以便您构建和调试 iOS 应用程序。

Unity pro 允许将本机库包含到您的游戏中。这允许您通过包含静态或共享库(取决于平台)并从 C# 调用库来运行原始 C/C++ 代码。不仅可能有一个特殊的 PhysX 构建,而且可能通过 Mono 的本机界面访问。

于 2015-07-29T19:57:52.380 回答