Unity3D如何编译PhysX?

时间:2015-07-29 19:43:09

标签: unity3d mono physx

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

我知道您无法将ijw / native模块与纯模块链接;您无法在纯模式下链接本机对象文件。然而,Unity3D似乎通过包含PhysX来解决这个问题。 如何吗

我找不到任何可以解释这个问题的资源,而不是通过Unity和PhysX合作建议的特殊构建:How does Unity3D use PhysX without requiring the PhysX runtime?

1 个答案:

答案 0 :(得分: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的原生界面访问。