我为Unity制作了一个Android插件,允许我的应用根据按下的按钮(Unity按钮)打开不同的Android活动。问题是,当您处于其中一个活动中并按后退按钮进入Unity活动时,屏幕显示为完全黑色,就像未加载纹理一样。当您按下主页按钮然后返回应用程序时也会发生这种情况。但是,当您按下它们应该按的位置时,这些按钮上的触摸事件会被触发。
显然,正在发生的事情是EGLContext
迷失了。这是显示它的日志:
03-15 15:10:00.340: W/GLThread(16135): [egl.swap] mRequestPaused = true ,surface.valid = true
03-15 15:10:00.340: I/GLThread(16135): mPaused is now true tid=12
03-15 15:10:00.340: I/GLThread(16135): releasing EGL surface because paused tid=12
03-15 15:10:00.340: W/EglHelper(16135): destroySurface() tid=12
03-15 15:10:00.340: W/EglHelper(16135): finish() tid=12
03-15 15:10:00.350: I/GLThread(16135): releasing EGL context because paused tid=12
03-15 15:10:00.350: I/GLThread(16135): waiting tid=12 mHaveEglContext: false mHaveEglSurface: false mPaused: true mHasSurface: true mWaitingForSurface: false mWidth: 1280 mHeight: 752 mRequestRender: false mRenderMode: 1
GLSurfaceView
引用说:
EGL背景丢失
在某些情况下,EGL渲染上下文将会丢失。这通常发生在设备进入睡眠状态后唤醒时。当EGL上下文丢失时,将自动删除与该上下文关联的所有OpenGL资源(例如纹理)。为了保持正确渲染,渲染器必须重新创建它仍然需要的任何丢失的资源。 onSurfaceCreated(GL10,EGLConfig)方法是一个方便的地方。
问题是我真的不知道如何获取上下文,因为它完全由Unity完成。
任何线索?
谢谢!
答案 0 :(得分:0)
关闭"实验性图形工作"在播放器设置中>其他设置。这为我修复了https://issuetracker.unity3d.com/issues/android-app-does-not-resume-graphics-context-after-being-minimized-and-maximized-again-if-graphics-jobs-are-enabled。