Mask
Mask继承了UIBehaviour, ICanvasRaycastFilter,IMaterialModifier。
OnEnable方法
如果含有Graphic组件,设置graphic.canvasRenderer.hasPopInstruction为true,调用graphic.SetMaterialDirty()方法。然后调用MaskUtilities.NotifyStencilStateChanged,重新计算遮罩。
OnDisable方法
- 如果含有Graphic组件,调用graphic.SetMaterialDirty,设置graphic.canvasRenderer.hasPopInstruction为false,设置graphic.canvasRenderer.popMaterialCount为0。
- 从StencilMaterial中移除m_MaskMaterial和m_UnmaskMaterial,并设置m_MaskMaterial和m_UnmaskMaterial为空,
- 最后调用MaskUtilities.NotifyStencilStateChanged,重新计算遮罩。
IsRaycastLocationValid方法
继承自ICanvasRaycastFilter,返回RectTransformUtility.RectangleContainsScreenPoint,RectTransform是否包含从相机看到的点。
GetModifiedMaterial方法
继承自IMaterialModifier接口,MaskableGraphic也继承了这个接口,这个方法是用来修改获取的材质来实现遮罩效果。