先看代码,这段代码在Windows上显示正常,但是打包到手机上显示黑色。
RenderTexture rt = RenderTexture.GetTemporary(width, height, 24);
camera.targetTexture = rt;
上网查了下,说贴图的格式可能不支持,然后把贴图格式改成RenderTextureFormat.ARGB32,ARGB32基本上所有手机都支持,一般来说比较费内存。先解决问题吧。
RenderTexture rt = RenderTexture.GetTemporary(width, height, 24, RenderTextureFormat.ARGB32);
rt.format = RenderTextureFormat.ARGB32;
camera.targetTexture = rt;
改完后,发现部分手机好了,还有些手机还是没好很无语。难道是ARGB32在不能正常手机上不支持。于是调用api检测下手机是否支持吧方法如下;
SystemInfo.SupportsRenderTextureFormat(RenderTextureFormat.ARGB32);
结果在不能正常显示的手机上得到的结果是true也就是说支持的。很无语完全不知道原因,最后看到有人在构造函数里直接指定贴图格式,于是改下试试吧。
RenderTexture rt = RenderTexture.GetTemporary(width, height, 24, RenderTextureFormat.ARGB32);
结果好了。具体原因未知,只能说是unity的一个坑。
,