("c..._unity.getstatic">
赞
踩
1不使用Jar包 把安卓方法写在UnityPlayerActivity 类下
//获得类
AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
//获得java对象
AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
//执行方法 jo.call 参数代表的是java对象的函数名字。
jo.Call("Method",arg);
2调用Jar包
1)需要修改程序的主Activity,所以可以在程序的生命周期做一些初始化和其他工作。
private static AndroidJavaObject CurrentActivity ()
{
if (Application.platform == RuntimePlatform.Android) {
//将packageName改为Jar包的全限定Activity名
string packageName = "com.pico.player.UnityActivity";
if (picoUnityAcvity == null) {
picoUnityAcvity = new AndroidJavaClass (packageName).GetStatic<AndroidJavaObject> ("unityActivity");
}
}
return picoUnityAcvity;
}
4.修改Unity项目中主Activity为jar包的主Activity,即包名.类名
5.在脚本文件中通过PicoUnityActivity的静态方法,传入方法名调用Jar包方法
public class CallJarMethod : MonoBehaviour {
… …
void CallJar()
{
PicoUnityActivity.CallObjectMethod("startJar");
}
}
2) 非继承主Activity方式 可以调用多个Jar包
public void test2()
{
AndroidJavaObject ajo = new AndroidJavaObject("com.picovr.getsdpath.GetSDPathClass");
//AndroidJavaObject(“包名.类名”);
AndroidJavaObject context = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity");
// ajo.Call<string>("调用的函数名", context);
string s = ajo.Call<string>("getSDPath", context);
// s2 = ajo.CallStatic<string>("getPath", ActivityContext);函数是Static类型的用CallStatic
text2.text = s;
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。