一:前言
StencilMaterial是一个静态类,负责管理模板材质,维护了一个MatEntry类型的列表,主要作用就是提供一个新的材质
对材质设置的参数,实际上是设置给Shader的(UI-Default.shader)
二:源码解析
——Add
添加一个材质
创建一个MatEntry,用指定的baseMat以及其他参数赋值给MatEntry并创建了customMat(实际上赋值的是customMat的shader参数)
设置材质时会开启UNITY_UI_ALPHACLIP,这也解释了为什么将Mask对象上Graphic对应的Alpha值设置为0,所有子对象都显示不出来了,在UI-Default.shader中有以下操作:透明度过小会被裁剪
——Remove
从MatEntry列表中移除一个已存在的材质 ——ClearAll
移除MatEntry列表中的全部材质