Can';t将事件从Unity传递回android库jar
我是Unity的新手,我正在尝试为Android library jar创建Unity插件,我面临以下问题: 我找不到将后退按钮事件传递到Android库的方法。Unity似乎阻止将此事件传递到库层。我所做的是通过设置以下行将触摸事件传递给Android端的活动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" /> 但是,我需要选择将我捕获的事件传递回库,
<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");
}
}