前两天浏览到腾讯游戏学院上的一篇文章,利用 RenderTexture 降低实际渲染分辨率以提升渲染性能,结合着我们自己的项目,对这一方案进行的探索研究。
关于修改游戏分辨率来提高游戏性能有另种方案:
第一种:使用unity引擎自身的API进行修改,Screen.SetResolution 此时修改的是物理分辨率,具体底层实现涉及到底层图形渲染的可自行查找相关资料,此时有一个问题,调用此API时,会修改整个游戏的分辨率,涉及到场景以及UI,可以参考腾讯最近上线的《权利的游戏》手游,而我们这边的美术觉得UI中的文字变得模糊,达不到他们效果,因而考虑使用第二种方案
第二种:即腾讯游戏学院这篇文章中所采用的的方式
我们是将场景相机即主相机照射的内容全部渲染到一张RenderTexture上,然后赋值到一个UI的RawImage上,然后修改下其他配置参数即可,其中RenderTexture可以调节成不同的大小,从而去匹配高中低端机型
那么,问题来了,先看我们这边点击选中场景物体的判断逻辑代码:
const float MAX_DIST = 100f;
var hitResult = new RaycastHit();
var ray = Camera.main.ScreenPointToRay(Input.mousePosition)