一、Unity如何调用c#之外的语言的内容
1、c/c++可以编译成.so动态库(android平台下),.dll动态库(window平台和编辑器下),.a静态库(iOS平台下),.bundle包(Mac平台下和编辑器下)
把编译好的东西放在Plugins目录下的指定平台目录下即可。比如iOS平台就放在iOS文件夹下面。Android平台根据cpu架构不同放在对应文件夹下面,比如Anroid/libs/armeabi-v7a。 Window平台及编辑器一般放在x86_64目录下。
不同动态库可能有冲突,比如x86的动态库以及x86_64的动态库是互相冲突的,这个要在编辑器中设置各个库的对应平台是哪个。
2、iOS扩展也可以直接把.m或者.mm的源文件放在iOS目录下,Unity打包的时候会直接将其打包到xcode工程里面。这个跟编译好静态库是一样的。
3、Window平台的动态库可以用vs来编译,也可以用mingw来编译。如果是c99用的比较多的,推荐用mingw。比如tolua就是用这套来编译的。
4、Android平台的插件如果是java的,推荐用Android Studio来编译。如果是c/c++的,推荐用ndk来编译。这个后面会详细介绍。
5、在c#中直接用DllImport即可直接使用对应函数,比如
#if UNITY_IOS
// iOS相关函数实现在.m文件中
[DllImport( "__Internal" )]
private static extern float _iOSS