Can';t将事件从Unity传递回android库jar

Can';t将事件从Unity传递回android库jar,android,jar,unity3d,back,Android,Jar,Unity3d,Back,我是Unity的新手,我正在尝试为Android library jar创建Unity插件,我面临以下问题: 我找不到将后退按钮事件传递到Android库的方法。Unity似乎阻止将此事件传递到库层。我所做的是通过设置以下行将触摸事件传递给Android端的活动 <meta-data android:name="unityplayer.ForwardNativeEventsToDal vik" android:value="true" /> 但是,我需要选择将我捕获的事件传递回库,

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

我找不到将后退按钮事件传递到Android库的方法。Unity似乎阻止将此事件传递到库层。我所做的是通过设置以下行将触摸事件传递给Android端的活动

<meta-data android:name="unityplayer.ForwardNativeEventsToDal vik" android:value="true" />
但是,我需要选择将我捕获的事件传递回库,而不是在Unity层处理它

也许是这样的

myActivity.dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK)); 
还是这个

myActivity.onBackPressed() 
但是通过C#脚本。我如何在脚本中实现这一点?

C#脚本:

========================

编辑:

如果您想呼叫onBackPressed,您可以这样做:

在YourActivity.java中

@Override
public void onBackPressed() {
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            Toast.makeText(UnityPlayerNativeActivity.this,
                    "on Back Pressed", Toast.LENGTH_SHORT)
                    .show();
        }
    });
    super.onBackPressed();
}
在C#脚本中:

void更新()
{
if(Input.GetKeyUp(KeyCode.Escape)){
Debug.Log(“收到onResume”);
AndroidJavaClass jc=新的AndroidJavaClass(“com.unity3d.player.UnityPlayer”);
AndroidJavaObject jo=jc.GetStatic

示例如下:

但我不确定您是否可以使用自己的活动。我建议创建一个新的活动扩展自UnityPlayerActiveActivity,因为这种方式比这种方式更简单、更不稳定

比尔


Frank

感谢您的回复,但我有一个jar,它引用活动并相应地处理它。您所描述的方法只有在我更改jar文件时才起作用。这里没有通过C#脚本将back key事件传递到活动层。好的,请参阅我更新的答案。希望它能帮助解决您的问题。
        void Update ()
    {
            if (Input.GetKeyUp (KeyCode.Escape)) {

                    AndroidJavaClass jc = new AndroidJavaClass ("com.unity3d.player.UnityPlayer"); 
                    AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject> ("currentActivity"); 
                    jo.Call ("yourBackEventFunction");
            }

    }
    public class YourActivity extends
        com.unity3d.player.UnityPlayerNativeActivity {
…

    public void yourBackEventFunction() {
        // Do something here
    }
…
    }
@Override
public void onBackPressed() {
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            Toast.makeText(UnityPlayerNativeActivity.this,
                    "on Back Pressed", Toast.LENGTH_SHORT)
                    .show();
        }
    });
    super.onBackPressed();
}
    void Update ()
    {
            if (Input.GetKeyUp (KeyCode.Escape)) {
                    Debug.Log ("onResume Received");
                    AndroidJavaClass jc = new AndroidJavaClass ("com.unity3d.player.UnityPlayer"); 
                    AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject> ("currentActivity"); 
                    jo.Call ("onBackPressed");
            }

    }