【问题标题】:Android library and Unity plugin communication issues. Cannot reference enum type and pass back button event to androidAndroid 库和 Unity 插件通信问题。无法引用枚举类型并将返回按钮事件传递给 android
【发布时间】:2014-01-16 13:10:10
【问题描述】:

我是 Unity 的新手,我正在尝试为 Android 库创建一个 Unity 插件,但我面临以下问题:

1) 我找不到将后退按钮事件传递给 Android 库的方法。我设法做的是通过设置以下行将触摸事件传递给Android端的活动

<meta-data android:name="unityplayer.ForwardNativeEventsToDal vik" android:value="true" />

&lt;activity android:name="com.unity3d.player.UnityPlayerProxyActivity" ... &gt;AndroidManifest

但是我不能以不需要更改库中代码的方式传递后退按钮事件

我现在在脚本中所做的是

public void Update() {

if(Input.GetKeyDown(KeyCode.Escape))
Application.Quit();
} 

但是,我需要选择将我捕获的返回事件传递给库,而不是在 Unity 层处理它。

2) 我试图在我的脚本中引用我的 Android 库中的枚举。

例如,我在 Place.java 文件中有以下枚举

package com.myapp.constants;

public enum Place { TOP, BOTTOM, RIGHT, LEFT }

我想找到一种方法从我的脚本中引用它。

我尝试过类似的方法:

AndroidJavaClass topPlace = new AndroidJavaClass("com.myapp.constants.TOP");

但没有运气。

谁能帮助解决这些问题?任何帮助表示赞赏...

【问题讨论】:

    标签: android plugins enums unity3d


    【解决方案1】:

    2) Java 中的枚举是一个常规类,它的枚举值是该类的实例,存储在静态字段中。所以要得到它们,你可以这样做:

    AndroidJavaObject topValue = new AndroidJavaClass("com.myapp.constants.Place").GetStatic<AndroidJavaObject>("TOP");
    

    【讨论】:

    • 弗拉基米尔感谢您的回答。您也知道 1) 部分问题的解决方案吗?
    • 我对 Android 的了解不够多。最坏的情况是直接调用 Java 插件。如果你正在写它,为什么不呢?
    • 直接调用Java插件是什么意思?我在 Unity 层捕获事件?如何传递给Java库层?
    • 如果您正在编写插件,那么您可以使用 AndroidJavaClass/Object 获取您自己的 Java 类,并在它们上调用方法,就像上面的枚举一样。但你已经知道了——所以我想这里有一个不同的问题,我不明白。
    • 这里奇怪的是Unity层阻止了像Android中的后键事件这样的事件传递给Java层..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多