Unity注册Java的回调

一、Unity注册监听Java的回调

1.Java端声明接口类

	package com.unity3d.player;
	
	public interface UnityListenerCallback {
	    void onReceiveScreenData(int num);
	}

2.在Java工程的UnityPlayerActivity中声明注册函数

	UnityListenerCallback unityCallback = null;

    public void RegisterCallback(UnityListenerCallback callback)
    {
        unityCallback = callback;
        // 测试一下,注册完毕后向Unity发送数据
        SendScreenDataToUnity(12);
    }
	// 测试函数,仅供参考
    void SendScreenDataToUnity(int data)
    {
        if (unityCallback != null)
        {
            unityCallback.onReceiveScreenData(data);
        }
    }

在上面的脚本中声明了一个测试的函数,仅供参考。

3.在Unity声明对应的接口类

	using UnityEngine;
	
	public class UnityListenerCallback : AndroidJavaProxy {
    /// <summary>
    /// 构造函数base后面填写的是Java端对应的回调接口类
    /// </summary>
    public UnityListenerCallback () : base ("com.unity3d.player.UnityListenerCallback") {

    }

    /// <summary>
    /// 对应的接口函数
    /// </summary>
    /// <param name="data">Java端传过来的数据</param>
    void onReceiveScreenData (int data) {
        Debug.Log ("onReceiveScreenData data:" + data);
    }
}

4.在Unity注册回调

       void RegisterCallback () {
#if UNITY_ANDROID
            AndroidJavaClass playerClass = new AndroidJavaClass ("com.unity3d.player.UnityPlayer");
            AndroidJavaObject ja = playerClass.GetStatic<AndroidJavaObject> ("currentActivity");
            UnityListenerCallback callback = new UnityListenerCallback ();
            ja.Call ("RegisterCallback", callback);
#endif
       }

二、使用UnitySendMessage

1.在Java工程的UnityPlayerActivity中声明回调函数需要的GameObject和方法名

    private String mGameObject;
    private String mMethodName;
    /**
     * 设置Unity回调
     *
     * @return
     */
    public void setCallback(String gameObject, String methodName)
    {
        this.mGameObject = gameObject;
        this.mMethodName = methodName;
    }

2.在Java工程的UnityPlayerActivity中发送消息

	UnityPlayer.UnitySendMessage(this.mGameObject, this.mMethodName, "JsonData"));

总结

这两种方式都可以使用,如果需要通讯较为频繁,建议使用第一种方法;否则,两个方法都可以使用。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值