【问题标题】:UnitySendMessage not working from non-unity activityUnitySendMessage 在非统一活动中不起作用
【发布时间】:2020-12-21 21:16:38
【问题描述】:

我正在开发一个应该启动另一个活动的 android 插件(带有 UI 和一切......)。 这个活动(当然不是继承自 UnityPlayerActivity)应该向 Unity C# 代码发送消息。 我正在尝试调用 UnityPlayer.UnitySendMessage,我在发送消息前一会儿看到了我的日志,但 C# 端没有收到它(不引发异常)。

这是从其他活动调用的回调:

@Override
public void generatePayload() {
   try {
      Log.v(TAG, "generatePayload was triggered");
      UnityPlayer.UnitySendMessage("AndroidObject", "generatePayloadMessage", "");
   } catch (Exception ex) {
      Log.e(TAG, "failed to send message to unity");
   }
}
  • 我已尝试从 unity 主要活动中调用此方法,并且消息已在 unity 端成功接收。
  • 我也尝试过从其他活动发送消息(我应该这样做),但在主线程中,它也没有工作......

有什么建议吗?当 UnityActivity 不在前台时,我不能向统一发送消息吗?如果是这种情况 - 我该怎么办?

【问题讨论】:

    标签: android unity3d


    【解决方案1】:

    上面的代码中没有发送消息/字符串,只有一个目标对象和方法,您正在发送一个空字符串到 generatePayLoadMessage([nothing being sent])

    试试

    UnityPlayer.UnitySendMessage("AndroidObject", "generatePayloadMessage", "Hello world");

    还请说明您在 Unity 端设置了什么来处理消息。

    【讨论】:

    • 这花了我太长时间才能解决。我修复了它,并在提出我的解决方案时发现了这一点。仅供参考,来自 android studio 的错误是 Attempt to invoke virtual method 'byte[] java.lang.String.getBytes(java.lang.String)' on a null object reference
    【解决方案2】:

    如果您的原生代码根本没有参数,请尝试发送 null 而不是 ""。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多