美文网首页
六、安卓开发与Unity08、unity调用安卓互调方式总结

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

作者: GameObjectLgy | 来源:发表于2022-03-02 12:47 被阅读0次
一、导出包的方式有三种
  • 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。

相关文章

网友评论

      本文标题:六、安卓开发与Unity08、unity调用安卓互调方式总结

      本文链接:https://www.haomeiwen.com/subject/hlesrrtx.html