1、Unity下C#与Java交互的代码:
using (AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) { using (AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity")) { jo.Call(method, args); } }a)、using的用法是定义一个范围,在范围结束时回收这段范围内所申请的内存;
b)、method就是java代码中的方法,args就是传给method的参数
PS:
Unity与java的交互除了可以使用AndroidJavaObject的对象调用call来访问以外,还可以使用AndroidJavaClass的对象调用callStatic函数来调用java中静态类的静态方法
using (AndroidJavaClass jc_info = new AndroidJavaClass(className)) { jc_info.CallStatic(staticMethodName, param); }
2、Java下与Unity的交互代码:
UnityPlayer.UnitySendMessage("Main Camera", "show", edit.getText().toString());
a)、要使用UnitySendMessage这个静态方法需要往Android工程引入一个jar包,包的所在路径为Unity的安装目录:EditorDataPlaybackEnginesandroidplayerdevelopmentbinclasses.jar,将这个包拷贝到Android工程的libs目录下就可以在代码中通过import com.unity3d.player.UnityPlayerActivity;和import com.unity3d.player.UnityActivity;来引用了
b)、在java中是通过发送消息的方式与Unity交互的,UnitySendMessage的第一个参数就是Unity中在层级视图中的物体名字,第二个参数就是这个物体上挂的脚本上的一个函数,第三个参数就是传给Unity上函数的参数
3、在Unity中打包:
a)、将Android的工程Build一下,然后将Android工程下的src右键->Export->java->JAR file,将其源码打包成Jar包以便在Unity中引用
b)、回到Unity中,在Porject视图中创建文件夹Plugins,在Plugins下再创建Android文件夹,在Android下再创建bin和res两个文件夹
c)、将前面Android编译好jar包拷贝到Unity中的Plugins->Android->bin目录下
d)、将前面Android工程的在bin目录下AndroidManifest拷贝到Unity中的Plugins->Android目录下
e)、将前面Android工程中的res下的所有文件拷贝到Unity中的Plugins->Android->res目录下
f)、准备工作完成,准备打包,在Unity中File->Build Settings...->选中你要的场景->PlatForm设置为Android->点击Player Settings...->other setting->把bundle Indentifier*设置成与安卓的src的包名一样(如com.jun)
g)、点击Bulid就可以了。