UGUI开启抗锯齿,解决Canvas Camera渲染模式下UI抖动问题
最近用unity搞一个小项目,用到了XCharts插件,这个插件除了一些小问题,总体还是不错的,最大的问题就是锯齿了。。官网文档里这么说的:
开启抗锯齿设置(在
Unity里设置)。调整UI渲染模式为Camera模式,开启MSAA,设置4倍或更高抗锯齿。锯齿只能减少难以避免,像素越高锯齿越不明显。
其实不仅仅是XCharts组件,通过重载 void OnPopulateMesh(VertexHelper vh)函数,在UGUI上自绘的图都有这个问题,因为它使用三角形来构建图形的。
但是,将Canvas设置为Camera模式,并开启MSAA抗锯齿之后,虽然画面确实有所改善了,但新的问题就又随之而来了。因为项目需要根据用户操作改变Camera的位置和朝向,整个UI开始随着主相机坐标变化而抖动,渲染相机角度改变的时候,也会抖动,总之,整个UI颤抖的让人很难受。。
百度上搜索UI颤抖,解决方法居然是将Canvas渲染模式改为Screen Space - Overlay,呵呵,问题又回去了。用这个模式就开不了抗锯齿,用Camera模式就颤抖,难道就没有两全其美的办法了么??
经过一番折腾,终于找到了完美的解决方案,如下:
------------------------------这里是隐藏下面文字的分割线-------------------------
------------------------------这里是隐藏下面文字的分割线-------------------------
------------------------------这里是隐藏下面文字的分割线-------------------------
------------------------------这里是隐藏下面文字的分割线-------------------------
------------------------------这里是隐藏下面文字的分割线-------------------------
------------------------------这里是隐藏下面文字的分割线-------------------------
------------------------------这里是隐藏下面文字的分割线-------------------------
------------------------------这里是隐藏下面文字的分割线-------------------------
------------------------------这里是隐藏下面文字的分割线-------------------------
------------------------------这里是隐藏下面文字的分割线-------------------------
其实很简单,就是创建一个UI专用的相机,除了渲染UI啥都不干。把Canvas设置为Camera模式,指定为该相机,但这个相机不需要动,用户只需要控制主相机运动,UI相机的位置和朝向始终是不变的,那么就解决了颤抖的问题,也可以在UI相机上开抗锯齿,而且,感觉将UI相机设置为正交相机时,抗锯齿效果更佳!
唯一的问题是,之前在3D场景中,物体组件上的OnMouseEnter和OnMouseExit事件不会再触发了,目前还不知道什么原因,但这个解决起来并不复杂,用射线手动检测一下就OK了。
至此,完美解决。
本文介绍了在Unity中使用UGUI遇到的抗锯齿和Canvas Camera模式下UI抖动问题。通过开启抗锯齿并调整渲染模式,虽然解决了锯齿问题,但导致UI随相机移动而抖动。最终,通过创建一个专门的UI相机并保持其位置和朝向不变,成功解决了抖动问题,同时实现了抗锯齿效果。对于3D场景中鼠标事件不再触发的问题,可以通过射线检测作为替代方案。
2654

被折叠的 条评论
为什么被折叠?



