Android Unity3d 通信总结
2017-04-13 23:32
246 查看
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.csdn.net/crazy1235/article/details/46733221
http://blog.csdn.net/acnt3w/article/details/52817071
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.csdn.net/crazy1235/article/details/46733221
http://blog.csdn.net/acnt3w/article/details/52817071
相关文章推荐
- android中的通信机制总结
- Android基础总结(四)网络通信
- android中的通信机制总结
- Unity3D Android使用Bugly定位崩溃问题总结
- android的一些总结——service(二)之activity与service之间的通信
- Android 服务通信方案总结
- android中的通信机制总结
- Android蓝牙通信总结
- unity3d Android客户端与PC服务器实现Socket通信(wifi)
- Android基础总结(五)网络通信2
- Unity3d与Android交互总结
- Unity3D中与Android通信
- android使用https通信总结
- Android之 Activity间通信总结
- android中的通信机制总结
- Android 进阶13:几种进程通信方式的对比总结
- android中的通信机制总结
- unity3d Android客户端与PC服务器实现Socket通信(wifi)
- Socket编程总结—Android手机服务器与多个Android手机客户端之间的通信(非阻塞)
- android中的通信机制总结