您当前的位置: 首页 >  ui

VT LI

暂无认证

  • 14浏览

    0关注

    126博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

lwrp下fgui的list需要关心的问题

VT LI 发布时间:2019-04-20 19:58:19 ,浏览量:14

在lwrp下如果我们用了UnityEngine.Rendering.GraphicsSettings.useScriptableRenderPipelineBatching = true;

那么我们的元素在同材质下并且同样的变体下就会合批。以节省drawcall。

但是这个用在fgui的list下就会出问题了。因为fgui下的元素用的材质比较多的是image材质和text材质。然而我们合批是因为材质一样就合批的。

在这种情况下,会有个问题,就是如果有两个list,一个list在另一个list上面,然后下面的list移动的位置小于另一个list。

由图上可以看到我有两个list,然后第二个list看不到。

这是因为,list下的元素会做裁剪,他的裁剪原理是用了Fgui-Image或Fgui-text下的CLIPPED变体,然后shader来做裁剪。

然后因为两个list在同一个批次(材质一样)

 

给到gpu的shader只能有一个进入,那么就哪个list的shader先进入就按照谁的shader来执行(按照先后顺序,也就是比较先进入的先执行)。

这样裁剪的范围就不正确了。

 

解决办法:

1.简单点就是有列表时不合批就。UnityEngine.Rendering.GraphicsSettings.useScriptableRenderPipelineBatching = false;

 

2.每个list下的image及text,用材质不同的参数就可以了,这样他们每个list就不合批,这样大家就可以用自己的CLIPPED的裁剪范围来裁剪了。就不会出现这个问题了。

 

比如我改材质的op,让他每个list都更改一个值

 

结果展示

 

各自裁剪各自的区域了

 

 

 

两个不通的批次

关注
打赏
1649603425
查看更多评论
立即登录/注册

微信扫码登录

0.0352s