UGUI源码解析——BaseMeshEffect

Posted Hello Bug.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UGUI源码解析——BaseMeshEffect相关的知识,希望对你有一定的参考价值。

一:前言

BaseMeshEffect继承了IMeshModifier,是用于实现网格效果的抽象基类,可以在子类继承并重写ModifyMesh方法去修改顶点数据,它与IMeshModifier没有太大的区别,只不过BaseMeshEffect类中定义了属性m_Graphic以及实现了IMeshModifier接口
Outline和Shadow都继承或间接继承了BaseMeshEffect
我们实现自己的网格效果时也尽量继承BaseMeshEffect类去实现而不是继承IMeshModifier接口


二:源码解析


可以子类继承BaseMeshEffect类重写ModifyMesh方法去修改顶点数据

 

在Graphic类的UpdateGeometry方法中首先调用了OnPopulateMesh方法将元素的顶点、颜色、UV等信息暂存到m_VertexHelper中,接着遍历身上继承了IMeshModifier的组件去调用ModifyMesh方法去更新m_VertexHelper数据,所以网格的绘制既可以写在OnPopulateMesh方法中也可以写在ModifyMesh方法中,只不过UGUI抽离出来一个IMeshModifier接口,它希望我们使用IMeshModifier这个接口来实现一些网格效果的变化,如阴影、描边、镜像等

以上是关于UGUI源码解析——BaseMeshEffect的主要内容,如果未能解决你的问题,请参考以下文章

UGUI源码解析——Shadow

UGUI源码解析——Shadow

Unity中实现UI渐变

UGUI源码解析——总览

UGUI源码解析——ICanvasElement

[UGUI]修改顶点