博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android向unity发送消息
阅读量:7252 次
发布时间:2019-06-29

本文共 3944 字,大约阅读时间需要 13 分钟。

有些时候需要Android向unity发送消息,有两种方法实现,一、通过unity再带的消息机制,二、通过注册回调的方式。

 

一、通过UnityPlayer.UnitySendMessage();方法

详细的可以参考

二、注册回调

用到的是 AndroidJavaProxy 这个类

下面是代码

Android部分

接口

1 public interface ExActivityListener {2     public void onRestart();3     public void onStart();4     public void onResume();5     public void onPause();6     public void onStop();7     public void onActivityResult(int requestCode, int resultCode, Intent data);8     public void onTest();9 }
1 public class MainActivity extends UnityPlayerActivity { 2  3     @Override 4     protected void onCreate(Bundle savedInstanceState) { 5         super.onCreate(savedInstanceState); 6  7     } 8     private ExActivityListener listener; 9     public void setListener(ExActivityListener listener)10     {11         Log.v("Unity", "setListener(1)!------------");12         this.listener = listener;13     }14 15     @Override16     public void onRestart()17     {18         Log.v("Unity", "onRestart!------------");19         super.onRestart();20         if(listener != null) listener.onRestart();21     }22 23     @Override24     public void onStart()25     {26         super.onStart();27         if(listener != null) listener.onStart();28     }29 30     @Override31     public void onResume()32     {33         super.onResume();34         if(listener != null) listener.onResume();35     }36 37     @Override38     public void onPause()39     {40         super.onPause();41         if(listener != null) listener.onPause();42     }43 44     @Override45     public void onStop()46     {47         if(listener != null) listener.onStop();48         super.onStop();49     }50 51     public void onTest()52     {53         if(listener != null) listener.onTest();54         super.onStop();55     }56     @Override57     public void onActivityResult(int requestCode, int resultCode, Intent data)58     {59         if(listener != null) listener.onActivityResult(requestCode, resultCode, data);60     }61     public String test()62     {63         Log.v("测试","成功");64         onTest();65         return "测试成功";66     }67 }

unity代码

1     public class ActivityListener : AndroidJavaProxy   2     {   3         public ActivityListener() : base("com.test.mytest.ExActivityListener")   4         {   5         }   6  7         public void onRestart()   8         {   9             UnityEngine.Debug.LogError("Back to Unity onRestart");  10         }  11 12         public void onStart()  13         {  14             UnityEngine.Debug.LogError("Back to Unity onStart");  15         }  16 17         public void onResume()  18         {  19             UnityEngine.Debug.LogError("Back to Unity onResume");  20         }  21 22         public void onPause()  23         {  24             UnityEngine.Debug.LogError("Back to Unity onPause");  25         }  26 27         public void onStop()  28         {  29             UnityEngine.Debug.LogError("Back to Unity onStop");  30         }  31 32         public void onActivityResult(int requestCode, int resultCode, AndroidJavaObject data)  33         {  34             UnityEngine.Debug.LogError("onActivityResult");  35         }  36         public void onTest()  37         {  38             UnityEngine.Debug.LogError("Back to Unity OnTest");  39         }  40     }  41 42     void Awake()  43     {  44         AndroidJavaObject activity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic
("currentActivity"); 45 activity.Call("setListener", new ActivityListener()); 46 UnityEngine.Debug.LogError("Awake"); 47 } 48 49 void Start()50 {51 AndroidJavaObject activity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic
("currentActivity"); 52 string value2 = activity.Call
("test"); 53 Debug.Log (value2);54 55 }56 }

 

如果报找不到类的错误,把AndroidManifest.Xml导进unity试试

 

转载于:https://www.cnblogs.com/Jason-c/p/7797851.html

你可能感兴趣的文章
不同项目配置不同的 Git 账号
查看>>
基于 Module 的 Laravel API 架构
查看>>
springboot+多线程简单实现
查看>>
警惕!这7件事情千万不要发生你身上-来自15年程序员的忠告
查看>>
什么是OOP(面向对象编程)?
查看>>
12. Integer to Roman
查看>>
使用noode.js创建一个服务器
查看>>
封装框架的实践
查看>>
5分钟学会开发浏览器扩展
查看>>
最新阿里内推Java后端面试题
查看>>
【修真院“善良”系列之十】初级Java程序员的学习路线
查看>>
Spring Cloud -Zuul
查看>>
聊聊storm的LoggingMetricsConsumer
查看>>
Ghost配置1——删除社交Link
查看>>
keras入门(三)搭建CNN模型破解网站验证码
查看>>
如何编写Go代码
查看>>
慕课网_《RabbitMQ消息中间件极速入门与实战》学习总结
查看>>
一个基于Node.js的本地快速测试服务器
查看>>
【go网络编程】-RPC编程
查看>>
Notadd 4.0.0-alpha.1 基于 nest.js 的微服务架构
查看>>