Unity与Android的互相调用

  • Post author:
  • Post category:其他


前言

我们unity程序有很多依赖android的地方,以为很简单,后来发现坑好多。unity只有在主线程才能调android的方法,在unity中调android的方法启动线程都不能执行,在unity的子线程无法获取AndroidJavaObject,这样耗时方法调用就会有问题了。

Unity与Android互相调用方法

Unity调Android,使用AndroidJavaClass和AndroidJavaObject就可以获取到java类和对象了,下面这个方法是获取默认UnityPlayerActivity对象的方法:

    AndroidJavaClass jc = new AndroidJavaClass ("com.unity3d.player.UnityPlayer");
    jo = jc.GetStatic<AndroidJavaObject> ("currentActivity");
    string result = jo.Call<string>("getVersion");

Android调unity也很简单

    UnityPlayer.UnitySendMessage("objectName", "functionName","value");

Unity中需要有name为“objectName”的对象,其绑定的脚本类需要这样的方法:

    void functionName(string str)

这样就可以接受到android发来的消息了,但这个消息参数是String,复杂对象无法直接传递。



版权声明:本文为mzm489321926原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。