Unity3D使用Mono将代码编译成纯中间语言,以实现交叉兼容性(如果我错了,请纠正我)。PhysX包含本机代码,其中一些代码不能用纯托管代码(/clr:pure)表示。
我知道您不能将ijw/本机模块与纯模块连接;您不能在纯模式下链接本机对象文件。然而,Unity3D似乎通过包含PhysX来解决这个问题。怎么做?
我找不到任何资源来解释这个问题,只能通过联合和PhysX合作伙伴关系( How does Unity3D use PhysX without requiring the PhysX runtime? )来解释这种特殊的构建。
发布于 2015-07-29 19:57:52
Mono和.NET允许用户通过调用外部库来调用本机C/C++代码。
统一有一个名为IL2CPP的系统,它采用中间的单一语言,并将其转换为C++ (或webgl通过emscripten构建的asm.js )。团结就是这样编译成iOS的。所有C#/Unityscript/Boo代码都转换为C/C++/Obj,然后将其包含到XCode项目中,以便您构建和调试iOS应用程序。
团结支持允许将本地库包含到您的游戏中。这允许您通过包含静态或共享库(取决于平台)并从C#调用库来运行原始C/C++代码。不仅有一个特殊的PhysX构建,而且很可能是通过Mono的本机接口访问的。
https://stackoverflow.com/questions/31709720
复制相似问题