UGUI之在UI上使用RenderTexture显示模型+AlphaBlend特效
在UI上显示模型无非就是2种。
1.在两个UI摄像机中夹一层3d摄像机,利用摄像机的Viewport Rect属性对模型进行裁切。
2.使用RenderTexture渲染在RawImage后显示在UI上。
我上一个项目就是采取第一种方法,用起来很不舒服。因为有很多效果都做不了,比如就是UI上盖模型,在盖UI,再盖模型这种,还有就是在滑动列表中显示模型,滑动裁切的话都很麻烦。
今天我想说的就是第二种,使用RenderTexture的方式来渲染模型。
先说缺点:
1.为了保证显示上的效果RenderTexture的文件区域必须大于RawImage的区域,我们目前用的是乘2倍。比如RawImage的区域是512X512,那么就得创建一个1024X1024大小的RenderTexture才能保证渲染效果。
2.如果人物身上有一些特殊的效果,比如outline描边这样的,放在RenderTexture上就是达不到效果。
3.如果模型身上带有AlphaBlend这样的特效,因为AlphaBlend要和背景做混合,而RenderTexture不像Camera那样有背景,显示上就会有 问题。(下面我会说我目前是怎么解决的)
优点的话,就很爽了。完全和UI一样,层级顺序,列表中显示模型、裁切、等等都很方便了。
RenderTexture显示AlphaBlend特效的方法
因为AlphaBlend特效需要和背景做混合,所以我们可以给它后面垫一个底图。这样就能解决在RenderTexture上显示带AlphaBlend的特效的模型。
创建一个Sprite 可以直接把UI的Sprite放上去。如果模型带特效就用Sprite,如果模型不带特效,完全可以用之前UI的制作方式,很方便灵活的切换它。
如下图所示,Game视图中显示的效果,这个翅膀的火焰特效就是alphablend
如下图所示,因为底图不止一张,大家看到下面还有好几张花纹了吗?都可以用Sprite2d叠在下面。