找回密码
 立即注册
查看: 357|回复: 0

六、安卓开发与Unity08、unity调用安卓互调方式总结

[复制链接]
发表于 2022-3-2 15:52 | 显示全部楼层 |阅读模式
一、导出包的方式有三种


  • Jar包
    1.包含了mainfest文件和Res文件夹。导出的mainfest会优先于unity自带的App设置,比如Icon,App名称等。unity不推荐这种久的方式。
    2.只有一个Jar包方式
    适用于简单调用安卓端API的场景。
  • Arr包
    unity推荐的一种方式,这种方式实际是Jar包第一种方式的进化。在安卓端生成Arr包方式与Jar插件稍有区别。
  • Gradle方式
    实质是将Jar包放在远程端或者本地的仓库,构建时才接入到unity工程,这样有利于减小Unity工程大小。这样子可以更方便地处理工程中各种Jar的依赖,使用于重度依赖安卓端,以安卓为主导开发的情况。
二、unity调用安卓端的API


  • 安卓端扩展unity的MainActivity的情况
    1.普通方法
    unity通过new AndroidJavaObject 对象,相当于调用对应的 Java 对象的构造函数。借助 C# 可变参数列表,可以给 Java 对象的构造函数传递任意数量的参数。
    其中,如果方法返回值类型则调用是必须带返回值类型。
// 泛型版本,目的是指定返回值的类型int hash = jo.Call<int>("hashCode");// 非泛型版本,处理返回值是void的情况。jo.Call("aMethodReturnVoid"); // String中没有返回void的简单方法。。。
2.如果方式是静态类的方法,那么unity通过静态类的方式访问
        AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");        AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");        jo.Call("CallAndrodiActivity");三、安卓调用Unity端API方式

    通过给unity物体发送消息的方式。属于对UnityPlayerActivity扩展的方式。
  • AndroidJavaProxy 接口代理
    1.Java代码中定义接口
public  interface javaSDKCallbackListener{    void OnSDKInited(String msg);    void OnLogined(String token);    void OnLoginOut();}
2.unity端实现接口
class SDKCallbackListener : AndroidJavaProxy{    // 这句话很重要!!!C#找到Jar中接口的引用    public SDKCallbackListener() : base("com.eam.qqlogin.SDKCallbackListener") { }        //实现接口中的方法    public void OnSDKInited(string msg)    {        Debug.Log( "OnSDKInited:" + msg);    }    public void OnLogined(string token)    {        Debug.Log("OnLogined:" + token);    }    public void OnLoginOut()    {        Debug.Log("OnLoginOut.);    }}
    unity端实现安卓的广播功能,然后直接监听安卓的广播消息
四、最终出包方式

    Android 工程生成 aar/jar 文件,复制到 Unity 工程中,最终使用 Unity 的 Build 机制生成 apk。Unity 工程将所有内容和代码导出为一个 Android gradle 项目,然后使用 Android Studio 打开项目进行开发,最终使用 Android Studio 打包 apk。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-17 00:45 , Processed in 0.188738 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表