【问题标题】:Native Android Activity and with touchevents in Java required using Unity3D使用 Unity3D 需要原生 Android Activity 和 Java 中的 touchevents
【发布时间】:2014-01-20 16:51:51
【问题描述】:

我正在使用 Unity 并将 Unity 项目导出为 eclipse 项目

这会产生一个简单的 NativeApplication

public class UnityPlayerNativeActivity extends NativeActivity
{
    protected UnityPlayer mUnityPlayer;    
protected void onCreate (Bundle savedInstanceState)
    {
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        super.onCreate(savedInstanceState);

        getWindow().takeSurface(null);
        setTheme(android.R.style.Theme_NoTitleBar_Fullscreen);
        getWindow().setFormat(PixelFormat.RGB_565);

        mUnityPlayer = new UnityPlayer(this);
        if (mUnityPlayer.getSettings ().getBoolean ("hide_status_bar", true))
            getWindow ().setFlags (WindowManager.LayoutParams.FLAG_FULLSCREEN,
                                   WindowManager.LayoutParams.FLAG_FULLSCREEN);

        int glesMode = mUnityPlayer.getSettings().getInt("gles_mode", 1);
        boolean trueColor8888 = false;
        mUnityPlayer.init(glesMode, trueColor8888);

    Button b = new Button(this);
        b.setOnClickListener( new OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getApplicationContext(), "Hello From Java", ).show();                }   });

        RelativeLayout layout = (RelativeLayout) View.inflate(this, R.layout.layout, null);
        layout.setLayoutParams(new LayoutParams(300,30));
        layout.addView(b);

        mUnityPlayer.addView(layout);
        View playerView = mUnityPlayer.getView();
        setContentView(playerView);

如您所见,我添加了一个 relativeLayout,我在统一布局之上进行膨胀。

但是,由于 Unity 位于 Native Code 中,并且该类是 NativeActivity 我的按钮的触摸事件在 Java 中不起作用 - 由于 Unity 编译为 DLL,因此我无法访问本机代码以将触摸事件(通过 JNI)发送回 Java

还有其他方法可以做到这一点吗? 如何在 Java 中触发触摸事件?或者我如何编写一个可以在 NDK 中捕获触摸事件的 Native Activity 扩展,以便我可以将它们传递给 java?

我觉得有趣的是,如果我不使用统一视图,而只是将内容视图设置为我自己的布局 - 触摸事件确实在 java 端起作用 但是第二次我使用统一视图我不再可以在 java 中使用触摸事件

【问题讨论】:

    标签: java android android-layout android-ndk unity3d


    【解决方案1】:

    我的工作正常,问题是 android 需要将元数据添加到 xml 清单中,以告诉 unity 将事件传递给 dalvik

    参见 UnityPlayerNativeActivity http://docs.unity3d.com/Documentation/Manual/PluginsForAndroid.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-17
      • 1970-01-01
      • 2015-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-24
      • 2020-06-06
      相关资源
      最近更新 更多