UnityPlayer作为具有透明背景的SubView? (Unity游戏引擎)

时间:2013-07-17 16:32:02

标签: android unity3d transparency subview glsurfaceview

我正在尝试在Android上执行以下操作(然后可能在iOS上执行以下操作),任何建议都将受到赞赏:

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

我目前的进展:

到目前为止,我设法将我的Unity3D项目作为库用于另一个Android项目,并将UnityPlayer视图分配给另一个Android视图顶部的FrameLayout,但相机背景颜色显示...我尝试将clear flag选项更改为仅深度但它不起作用。

我还设法使用单独的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);

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

非常感谢

1 个答案:

答案 0 :(得分:1)

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