解决Unity UGUI 抗锯齿,解决Canvas Camera模式抖动问题

本文介绍了在Unity中使用UGUI遇到的抗锯齿和Canvas Camera模式下UI抖动问题。通过开启抗锯齿并调整渲染模式,虽然解决了锯齿问题,但导致UI随相机移动而抖动。最终,通过创建一个专门的UI相机并保持其位置和朝向不变,成功解决了抖动问题,同时实现了抗锯齿效果。对于3D场景中鼠标事件不再触发的问题,可以通过射线检测作为替代方案。

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了。

至此,完美解决。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

示申○言舌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值