Unity3d-Android花屏处理

public bool CameraEnable
    {
        get
        {
            return mainCamera.enabled;
        }
        set
        {
            mainCamera.clearFlags = CameraClearFlags.Skybox;
            mainCamera.backgroundColor = new Color(0F, 0F, 0F, 0.1F);
            mainCamera.enabled = value;
        }
    }

办法1:将当前要发布的场景另存为一场景文件,重新发布。办法2:在项目>品质中设置发布品质为fast,或者降低各项发布品质参数。办法3:在显卡设置中,设置成较老显卡所支持的一些渲染功能。

问题:在切换场景的时候,切换的一瞬间会出现花屏的现象。其实不仅仅是在切换场景的时候,在切换相机的时候也有可能出现花屏的现象。
问题原因:由于游戏渲染底层都是由OpenGL来绘制的。在Unity3d中Camera的作用其实就是OpenGL的作用,来绘制各种各样的图形。
所以,与Camera渲染问题相关的都应该是OpenGL的问题。
之所以出现花屏,是因为在切换相机的时候,相机清除颜色缓存的时候,没有提前赋给它一个确定的颜色值,导致相机颜色清除之后出现了一个随机or错误or动态的值。
总之,就是没有正确的清除相机的颜色缓存。
问题解决方法:
Unity3d中用camera.clearFlags,或者其他方式来清楚缓存 可能没有解决或者不太可靠。
所以,直接调用OpenGL的清除显示缓存的方法,强制清除颜色。
在Unity3d中,可以直接只用OpenGL,调用GL.
在切换相机前调用GL.Clear(false,true,Color.black);把openGL view颜色清空。
(具体GL.Clear()的参数意思参照Unity3d的文档)



p.s.之前搜过相关问题的解答,有位朋友说是模型加载过多的缘故,解决方法是控制了一下模型同时加载的数量。
这个方法我到时没有试。
因为花屏出现的情况跟我打包的apk也有关系。同样的代码,打两个包,有的有花屏,有的就没有。

你可能感兴趣的:(Unity3d)