2

我正在尝试在 Android 上执行以下操作(然后可能在 iOS 上),任何建议将不胜感激:

在原生 Android 视图之上覆盖 UnityPlayer 视图,其中仅绘制 3D 对象且没有相机背景(透明背景)

我目前的进展:

到目前为止,我设法将我的 Unity3D 项目作为库使用到另一个 Android 项目中,并将 UnityPlayer 视图分配给另一个 Android 视图顶部的 FrameLayout,但相机背景颜色显示...我尝试将清除标志选项更改为仅深度但它没有不行。

我还设法使用了一个单独的 GLSurfaceView,我分配了扩展 UnityPlayer 的类并将 GLSurfaceView.Renderer 实现为渲染器,但我仍然得到不透明的背景。

我的代码如下:

// the class extending the player
class CustomUnityPlayer extends UnityPlayer implements GLSurfaceView.Renderer {
    public CustomUnityPlayer(ContextWrapper context) {
        super(context);
    }
    public void onDrawFrame(GL10 gl) {
        super.onDrawFrame(gl);
    }
}

// inside  OnCreate function:
        m_UnityPlayer = new CustomUnityPlayer(this);
        int glesMode = m_UnityPlayer.getSettings().getInt("gles_mode", 1);
        m_UnityPlayer.init(glesMode, false);

        mUnityView = new GLSurfaceView(getApplication());
        mUnityView.setEGLContextClientVersion(2);
        mUnityView.setZOrderOnTop(true);
        mUnityView.setZOrderMediaOverlay(true);
        mUnityView.setEGLConfigChooser(8, 8, 8, 8, 16, 0);
        mUnityView.setRenderer(m_UnityPlayer);
        mUnityView.getHolder().setFormat(PixelFormat.TRANSLUCENT);

        setContentView(R.layout.activity_fullscreen);

        FrameLayout layout = (FrameLayout) findViewById(R.id.UnityView);
        LayoutParams lp = new LayoutParams(LayoutParams.FILL_PARENT,
                LayoutParams.FILL_PARENT);
        layout.addView(mUnityView, 0, lp);

我错过了什么,甚至有可能吗?任何帮助都感激不尽。

非常感谢

4

1 回答 1

1

经过一些尝试...删除 mUnityView.setZOrderMediaOverlay(true); 为我做了诀窍(适用于 Unity 4.2 及更低版本......不适用于 Unity 4.3 及更高版本)

于 2013-07-18T13:14:02.367 回答