【问题标题】:Unity Android Plugin-How to call onKeyDown method?Unity Android Plugin-如何调用onKeyDown方法?
【发布时间】:2016-10-13 10:45:30
【问题描述】:

我编写了一个 android 库,它的扩展名是 .jar。我想在 Unity 中使用它。我使用了 onKeyDown() 方法,但是当我作为 AndroidJavaObject 调用时,脚本不起作用。在 Unity 中如何调用 onKeyDown 方法?

编辑: 统一代码 c#:

public AndroidJavaClass jc;
jc = new AndroidJavaClass("com.unitylib.unity.unitylib.StartActivity");
jc.Call ("onKeyDown");

Android 代码:

public int x = 0 ;
public boolean onKeyDown(int keyCode, KeyEvent event) {

if (keyCode == event.KEYCODE_VOLUME_UP) {

        x = 2 ;

    }
return  true;
}

我也尝试从 UnityActivity 开始,但它没有用。

【问题讨论】:

  • 如果您不提供代码,您可能无法得到答案
  • 我添加了代码。感谢您的回答。
  • 您在这里想要实现的目标非常混乱。这个插件到底应该做什么? onKeyDown函数是自动调用的回调函数……为什么要直接调用onKeyDown函数呢?
  • 我正在尝试统一检测音量增大、音量减小和耳机挂钩按钮,我试过了:/。我该怎么做?

标签: android unity3d plugins onkeydown


【解决方案1】:

你不能在没有对象引用的情况下调用AndroidJavaClass.Call,因为它是公共的,但不是静态的。

所以要么将对象引用(您的类的实例)作为AndroidJavaObject 获取,然后从中调用。

或者更简单一点,如果可能的话,将 onKeyDown 设为静态,并使用 AndroidJavaClass.CallStatic

【讨论】:

  • 我不能使静态 onKeyDown 它给出错误,@Programmer 说 onKeyDown 函数是其他 cmets 中的回调函数。如何统一检测音量增大、音量减小和耳机挂钩按钮?
  • 简单来说,像这样:制作一个插件来监听事件,然后向unity发送消息。看看这个:stackoverflow.com/a/27166551/5756888
  • 感谢您的回答。我会试试的。
  • 它有效:D。我忘记将 AndroidManifest.xml 文件复制到资产:/ 感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多