Unity与Android通信 03与安卓互相调用

01 导出Jar包+扩展MainActivity+Java主导。第一步,进入到AS里面点击File => New => NewModule ,

然后再点击Android Library 创建安卓库。


然后在你创建好的安卓库文件里面的java文件夹有个com.example.jelly.unitytest(有可能文件夹名称不一样取决于

创建时的库名称)右键创建Empty Activity,创建一个MainActivity。



创建完MainActivity之后在资源文件里面会有一个activity_main.xml,为了防止与unity有冲突需删掉。然后在MainActivity.java里把setContenView(R.layout.activity_main);删掉。


然后我们需要找到Unity Class的jar包,一般默认路径是:

C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes

把jar包复制到libs文件里去,这里需要先切换试图到Project,不然不会显示libs文件夹。导入到libs文件完成之后右键jar包点击Add As Library就完成了


之后的话需要调整下安卓库的AndroidManifest.xml,当点击进去的时候发现里面其实什么都没有,这里需要把app里面的AndroidManifest.xml的中间部分复制到安卓库就可以了,结果如下


然后在MainActivity里修改父类继承自UnityPlayerActivity,再写一个供unity通信测试的方法


之后再选中testlibrary  点击Build =>Make Module"testlibrary"按钮使其build。切换到Project试图,在testlibrary文件build=> intermediates=>bundles=>debug里右键Show in Explorer让其显示文件夹,然后把debug里libs里的classes.jar给删掉,然后把外面的classes给剪切过来到libs,然后把libs和res文件夹复制出去。回到AS里,把intermediates=>manifests=>full=>debug里的AndroidManifest.xml也给复制出去,这三个文件是要提供给unity的。在这里要注意下AndroidManifest.xml里面的包名要和unity的包名保持一致,包名全部小写。


接下来是Unity部分:

1.Unity调用Android方法:新建一个unity项目,创建文件夹Plugins=>Android,然后把之前复制出去的三个文件夹导入到Android文件夹下面,创建一个c#脚本,代码如下

public class AndroidTest : MonoBehaviour
{

    private void Start()
    {
        //获得位于com.unity3d.player包下的UnityPlayer类
        AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        //获得jc所代表的类下currentActivity的对象,现在jo就=AS下的MainActivity
        AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
        //调用MainActivity的方法,没有返回值直接调用Call,有返回值调用Call<参数类型>(方法名,参数)
        jo.Call<int>("add",1,2);
    }
}
2.Android调用Unity方法:

首先要在Unity中新建一个脚步供Android调用的方法,

 public void AndroidCallUnity()
    {
        Debug.Log("AndroidCallUnity is pass");
    }
然后回到AS里面的MainActivity,这里有三个参数
UnityPlayer.UnitySendMessage(s:"Unity挂载脚步的物体名称",s1:"方法名",s2:"参数");

最后在AS Build,把libs和res替换掉unity里面就完成了

猜你喜欢

转载自blog.csdn.net/kelly59/article/details/80234094