【Unity】Android Studio 和Unity的交互

以下提及的Java代码代指Android Studio 中的代码,C#代码代指unity中的代码

Android Studio 中 Java 调用 C# 的方式

1. 引用Unity库文件 使用unity提供的UnitySendMessage()方法

参考博文:https://www.cnblogs.com/godshadow/p/14854767.html
弊端是必须将代码挂在某个组件上。对于需要热更的部分就不太友好了。

2.使用接口继承,对象传递的方法

虽然麻烦,好处是随处可用。方便热更!
在Java中定义一个接口 IAndroidCallbackListener

public interface IAndroidCallbackListener {
    
    
        void DebugLog(String msg);        
        void OnCreated(Object javaObject);
        void OnDeletedLive(String id);
}

在C#中继承 AndroidJavaProxy 并实现接口 IAndroidCallbackListener

public  class IAndroidCallbackListener : AndroidJavaProxy
{
    
    
    public IAndroidCallbackListener() : base("com.strawberry.mylibrary.IAndroidCallbackListener") {
    
     }
    public void DebugLog(string msg) {
    
    
        Debug.Log(msg);
    }
    /// <summary>
    /// 用于传递Java中的实例对象 
    /// </summary>
    public void OnCreated(AndroidJavaObject javaObject) 
    {
    
    
        Debug.Log(msg.ToString());
        var kCurrentActivity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity");
        javaObject.Call("OnInit", kCurrentActivity);
    }
    public void OnDeletedLive(string msg) {
    
     
    }
}

使用时 需要在 C# 中创建实例化然后对象传递至Java中使用。

IAndroidCallbackListener m_kAndroidCallBackListener = new IAndroidCallbackListener();
.......
var kCurrentActivity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity");
m_kUnityHelper = new AndroidJavaObject("com.strawberry.mylibrary.UnityHelper");
// 传递IAndroidCallbackListener 对象
m_kUnityHelper.Call("OnInit", m_kAndroidCallBackListener, kCurrentActivity);
public void InitSDK(IAndroidCallbackListener listener,Object jo) {
    
    
        _UnityListener = listener;        
        _UnityListener.DebugLog(TAG + "启用 InitSDK 成功");
    }

Unity 中 C# 调用 Java 的方式

参考Unity 官方文档 :AndroidJavaObject

AndroidJavaObject javaObjec;
......
 javaObject.Call("OnInit", kCurrentActivity);

猜你喜欢

转载自blog.csdn.net/sunheng_/article/details/122314190