Android Unity3d 通信总结

本文探讨了在Unity3d与Android交叉开发中使用Android jar包的通信方式。主要介绍了通过反射在Unity3d中创建并调用Android jar包内方法的流程,以及提供了Unity3d导出工程以供Android调用的相关资源链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Unity3d与Android交叉开发主要有两种方式,一是Unity3d导出Android工程,二是Android生成jar包,导入到unity3d plugin/bin/目录下,本篇分析第二种方式

Unity3d采用反射的方式调用Android jar包里面的方法

	void Start(){
		#if !UNITY_EDITOR
		unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
		currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
		connectionClient = new AndroidJavaObject("com.test.connection.ConnectionClient", currentActivity);
                connectionClientClass = new AndroidJavaClass("com.test.connection.ConnectionClient");
                #endif
         }

反射生成ConnectionClient对象。

    public ConnectionClient(Activity activity){

        init(activity);
    }
Java类的构造方法


	public void CallPublicMethod(){
		Debug.Log("CallPublicMethod");
		connectionClient.Call("publicMethod");

	}
	public void CallStaticMethod(){
		Debug.Log("CallStaticMethod");
		connectionClientClass.CallStatic("staticMethod");
	}

通过connectionClient对象就可以调用ConnectionClient的公共方法,静态方法



	public bool CallMethod(){

		Debug.Log("CallMethod");
		bool result = connectionClient.Call<bool>("publicMethodReturnBoolean");
		Debug.Log("CallMethod result:"+result);
		return result;
	}

利用泛型调用有返回值的方法,基本类型和string都可以,C#的object和Java object不能互通。

public void CallMethod(){

	CallMethodWithArgs ("a", "b", "c");//第一种可变长度参数方式
	//connectionClient.Call ("method", "a", "b", "c");//第二种直接调用
}
private void CallMethodWithArgs(params string[] args){
	connectionClient.Call ("method", args);
}

若是要传递多个参数,可以采用以上两种方式


	void ReceiveMethod(string msg){
		print("Receive from Android");
		Debug.Log (""+msg);
	}

Unity3d Receiver通过设置一个方法Receive专门处理Android 发送消息,也能起到简单的通信


    public static void noticeUnity(String message) {
        UnityPlayer.UnitySendMessage("Receiver", "RecevieMethod", message);
    }

Android端通过UnityPlayer.UnitySendMessage("Receiver", "ReceiveMethod",message);向Uniry传递消息。


Unity3d导出工程供Android调用参考这篇文章

http://blog.youkuaiyun.com/crazy1235/article/details/46733221


http://blog.youkuaiyun.com/acnt3w/article/details/52817071


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值