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

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

详细的可以参考http://www.xuanyusong.com/archives/676

二、注册回调

用到的是 AndroidJavaProxy 这个类

下面是代码

Android部分

接口

 public interface ExActivityListener {
public void onRestart();
public void onStart();
public void onResume();
public void onPause();
public void onStop();
public void onActivityResult(int requestCode, int resultCode, Intent data);
public void onTest();
}
 public class MainActivity extends UnityPlayerActivity {

     @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); }
private ExActivityListener listener;
public void setListener(ExActivityListener listener)
{
Log.v("Unity", "setListener(1)!------------");
this.listener = listener;
} @Override
public void onRestart()
{
Log.v("Unity", "onRestart!------------");
super.onRestart();
if(listener != null) listener.onRestart();
} @Override
public void onStart()
{
super.onStart();
if(listener != null) listener.onStart();
} @Override
public void onResume()
{
super.onResume();
if(listener != null) listener.onResume();
} @Override
public void onPause()
{
super.onPause();
if(listener != null) listener.onPause();
} @Override
public void onStop()
{
if(listener != null) listener.onStop();
super.onStop();
} public void onTest()
{
if(listener != null) listener.onTest();
super.onStop();
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
if(listener != null) listener.onActivityResult(requestCode, resultCode, data);
}
public String test()
{
Log.v("测试","成功");
onTest();
return "测试成功";
}
}

unity代码

     public class ActivityListener : AndroidJavaProxy
{
public ActivityListener() : base("com.test.mytest.ExActivityListener")
{
} public void onRestart()
{
UnityEngine.Debug.LogError("Back to Unity onRestart");
} public void onStart()
{
UnityEngine.Debug.LogError("Back to Unity onStart");
} public void onResume()
{
UnityEngine.Debug.LogError("Back to Unity onResume");
} public void onPause()
{
UnityEngine.Debug.LogError("Back to Unity onPause");
} public void onStop()
{
UnityEngine.Debug.LogError("Back to Unity onStop");
} public void onActivityResult(int requestCode, int resultCode, AndroidJavaObject data)
{
UnityEngine.Debug.LogError("onActivityResult");
}
public void onTest()
{
UnityEngine.Debug.LogError("Back to Unity OnTest");
}
} void Awake()
{
AndroidJavaObject activity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity");
activity.Call("setListener", new ActivityListener());
UnityEngine.Debug.LogError("Awake");
} void Start()
{
AndroidJavaObject activity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity");
string value2 = activity.Call<string>("test");
Debug.Log (value2); }
}

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

Android向unity发送消息的更多相关文章

  1. iOS端给unity发送消息,实现两者交互。

    上一篇我们简单说了一下unity发消息给iOS端.现在我们就来说一下iOS端给unity发送消息的简单使用. 首先iOS端做得事情其实很简单就一句话,直接上代码 /** * 第一个参数:是unity那 ...

  2. Android Handler类 发送消息-post()和postDelay(), Looper讲解

    https://blog.csdn.net/weixin_41101173/article/details/79701832 首先,post和postDelay都是Handler的方法,用以在子线程中 ...

  3. Android 使用EventBus发送消息接收消息

    基本使用 自定义一个类 public class LoginEvent { private String code;//是否成功 public LoginEvent(String code) { th ...

  4. Android与Unity相互调用

    1. 在Unity里调用Android代码: void OnGUI(){ AndroidJavaClass jc = new AndroidJavaClass("com.some.packa ...

  5. Android 与Unity交互之Toast消息

    Toast.makeText(MainActivity.this,message.obj.toString(),Toast.LENGTH_SHORT).show();这一句代码不能直接放在 publi ...

  6. Android 基于Netty的消息推送方案之字符串的接收和发送(三)

    在上一篇文章中<Android 基于Netty的消息推送方案之概念和工作原理(二)> ,我们介绍过一些关于Netty的概念和工作原理的内容,今天我们先来介绍一个叫做ChannelBuffe ...

  7. Android 主线程和线程之间相互发送消息

    通过分析Activity源码,我们知道每个Activity都有一个Looper,所以主线程在接收Message是不需要调用Looper.prepare()和Looper.loop(),但是线程是不带L ...

  8. Android:子线程向UI主线程发送消息

    在Android里,UI线程是不同意被堵塞的.因此我们要将耗时的工作放到子线程中去处理. 那么子线程耗时处理后要如何通知UI线程呢? 我们能够在UI主线程中创建一个handler对象,然后通过重写其h ...

  9. Android 使用handler实现线程间发送消息 (主线程 与 子线程之间)、(子线程 与 子线程之间)

    keyword:Android 使用handler实现线程间发送消息 (主线程 与 子线程之间).(子线程 与 子线程之间) 相信大家平时都有使用到异步线程往主线程(UI线程)发送消息的情况. 本文主 ...

随机推荐

  1. 转Hibernate继承

    hibernate继承映射 以下测试是在mysql中进行的. 1.单表方式 Animal.java @Entity @Inheritance(strategy=InheritanceType.SING ...

  2. css3实现轮播图

    css3动画属性简写: animation: name  duration  timing-function  delay  iteration-count  direction  fill-mode ...

  3. SpringBoot学习笔记(11)-----SpringBoot中使用rabbitmq,activemq消息队列和rest服务的调用

    1. activemq 首先引入依赖 pom.xml文件 <dependency> <groupId>org.springframework.boot</groupId& ...

  4. LaTex的几种数学符号字体以及相关说明

    \mathrm is the normal upright Roman font \mathnormal is the normal math italic font: $\mathnormal{a} ...

  5. linux上使用chrome自动化测试(无界面)

    selenium自动化测试主要是用于有图形界面的系统上,对于无图形界面的情况可以通过以下方法来实现 服务器信息 [root@spider01 ~]# hostnamectl Static hostna ...

  6. hdu5321 beautiful set(莫比乌斯反演)

    设\(cnt[i]\)为权值为i的倍数的数的数量. \(f0[i],f1[i]\)分别为两种方法\(gcd=i\)的贡献是i的多少倍. \(F0[i],F1[i]\)分别为两种方法\(gcd\)为\( ...

  7. ElementUi rules表单验证

    ElementUi 表单验证 工作中常用到的JS验证 可以在pattern中书写正则,并且配合elementUI进行表单验证. pattern 属性规定用于验证输入字段的模式.模式指的是正则表达式. ...

  8. MarkDown写作之嵌入LaTeX和HTML

    本系列文章由 @YhL_Leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/49788741 Markdown 是一种 ...

  9. 集团公司(嵌入ETL工具)財务报表系统解决方式

    集团公司(嵌入ETL工具)財务报表系统解决方式 一.项目背景: 某集团公司是一家拥有100多家子公司的大型集团公司,旗下子公司涉及各行各业,包含:金矿.铜矿.房产.化纤等.因为子公司在业务上的差异.子 ...

  10. Redit集群搭建-Sentinel模式搭建

    Redit集群搭建 学习了: Windows:http://blog.csdn.net/mrxiagc/article/details/52799081 Linux:https://www.cnblo ...