Unity3D:UGUI圆角矩形Image通过Shader实现

之前写了一个圆形Image的组件,用来制作头像。但是那个方法是通过重绘UI的Mesh去实现的,如果对于性能要求比较高的话,画出来的Mesh面数就会影响性能了,所以今天就有了这个方法,用Shader实现。当然我用的是Shader Graph连线实现的,我没试验过,这种方法和手写的Shader之间性能效率问题。不过理论上应该相差不多,可能对于内存方面可能相对占用大一些。

不废话下面是Shader Graph的连线图:文章源自大腿Plus-https://www.zhaoshijun.com/archives/1857

Unity3D:UGUI圆角矩形Image通过Shader实现文章源自大腿Plus-https://www.zhaoshijun.com/archives/1857

一、使用方法:文章源自大腿Plus-https://www.zhaoshijun.com/archives/1857

1、新建材质,选择这个Shader,将材质拖到对应UI上文章源自大腿Plus-https://www.zhaoshijun.com/archives/1857

2、如果是URP管线下,Canvas要选择相机模式,并赋上相机(非URP管线忽略),否者在Game视图会显示黑边(只在UI上是这样)。文章源自大腿Plus-https://www.zhaoshijun.com/archives/1857

需要注意的有以下三点:文章源自大腿Plus-https://www.zhaoshijun.com/archives/1857

1、要在Inspector面板的Shader下隐藏Texture2D,需要勾掉Texture2D的Exposed。文章源自大腿Plus-https://www.zhaoshijun.com/archives/1857

2、Texture2D的名称必须是MainTex,否则Image在更换图片的时候不能给材质赋上图片。文章源自大腿Plus-https://www.zhaoshijun.com/archives/1857

3、Rounded的最小值为0.001,最大值是0.5。文章源自大腿Plus-https://www.zhaoshijun.com/archives/1857

这种方法相对于重绘UI的Mesh的方法局限性就是UI必须是正方形的,否则就会变形,达不到想要的效果,但是边缘显示效果是最好的。文章源自大腿Plus-https://www.zhaoshijun.com/archives/1857

我的微信
微信扫一扫
weinxin
shijun_z
我的QQ
QQ扫一扫
weinxin
846207670
 最后更新:2023-10-29
大腿Plus
  • 本文由 大腿Plus 发表于 2023年10月10日 15:38:34
  • 转载请务必保留本文链接:https://www.zhaoshijun.com/archives/1857

发表评论