跨平台Plugins

PC平台

调用C/C++代码

C++代码需要使用extern"C"

编译后的c dll放置在Assets/Plugins/x86(或x86_64)下,命名为PluginName.dll

在C#中使用如下代码声明

[DllImport("PluginName")]
public static extern float func();

Android平台

1.调用C/C++代码(ini层的so库)

C++代码使用extern"C"

编译后的c dll放置在Assets/Plugins/Android/libs/armeabi(或armeabi-v7a或x86)下,命名为libPluginName.so

在C#中使用如下代码声明

[DllImport("PluginName")]
public static extern float func();

2.调用java代码(Android层的jar)

使用Android开发工具创建Android工程,将代码编译打包成jar文件

Unity在Android上是一个Activity,java代码需要继承

com.unity3d.player.UnityPlayerActivity

修改manifest.xml里面的activity的名称

在C#中使用AndroidJavaClass和AndroidJavaObject来访问

更方便的方法,直接使用已有的

com.unity3d.player.UnityPlayer

在C#中的代码

UnitySendMessage("GameObjectName1","MethodName1","Message to send");

iOS平台

调用C/C++/Objective-C代码(.a静态库)

创建xcode项目将编译的静态库a放入Assets/Plugins/iOS下,命名为libPluginName.a

直接将xcode工程里的源码放在Assets/Plugins/iOS/Classes下

在C#中使用如下代码声明

[DllImport("__Internal")]
public static extern void func();

在C/C++/Objective-C调用C#的代码

UnitySendMessage("GameObjectName1","MethodName1","Message to send");

results matching ""

    No results matching ""