2D

精灵遮罩

精灵遮罩组件用于对 3D/2D 场景中的精灵渲染器文字渲染器实现遮罩效果。

070C8B9F-14E2-4A9A-BFEC-4BC3F2BB564F
参数类型说明
spritenumber使用精灵的引用
alphaCutoffnumber当前 mask 有效 alpha 值的下限(范围:0~1),即 sprite 的纹理中 alpha 值小于 alphaCutoff 的将被丢弃
influenceLayersnumber当前 mask 影响的遮罩层,默认值为 Everything,表示对所有遮罩层都有影响
目前仅支持传入精灵定义遮罩形状

精灵遮罩与受遮罩影响的组件之间的层级关系一般分为以下三种:

influenceLayersmaskLayer是否生效
Layer0Layer0相等,生效
Layer1,Layer2Layer2,Layer3有交集,生效
Layer4Layer5无交集,不生效
influenceLayers :精灵遮罩影响的层级,maskLayer :精灵渲染器或文字渲染器的遮罩层级
调整完层级后,若遮罩还是没有任何效果,可能是因为受遮罩影响的组件的遮罩类型还是默认的(None),此时设置对应的 SpriteMaskInteraction 即可

使用

层级面板 依次 右键 -> 2D Object -> Sprite Mask 即可快速创建一个包含精灵遮罩的节点。

070C8B9F-14E2-4A9A-BFEC-4BC3F2BB564F

在脚本中可以用如下代码使用精灵遮罩:

// 创建一个遮罩实体
const spriteEntity = rootEntity.createChild(`spriteMask`);
// 给实体添加 SpriteMask 组件
const spriteMask = spriteEntity.addComponent(SpriteMask);
// 通过 texture 创建 sprite 对象
const sprite = new Sprite(engine, texture);
// 设置 sprite
spriteMask.sprite = sprite;
// mask 的 sprite 中纹理 alpha 小于 0.5 的将被丢弃
spriteMask.alphaCutoff = 0.5;
// mask 对所有遮罩层的精灵都生效
spriteMask.influenceLayers = SpriteMaskLayer.Everything;
// mask 只对处于遮罩层 Layer0 的精灵有效
spriteMask.influenceLayers = SpriteMaskLayer.Layer0;
// mask 对处于遮罩层 Layer0 和 Layer1 的精灵有效
spriteMask.influenceLayers = SpriteMaskLayer.Layer0 | SpriteMaskLayer.Layer1;
 
// 设置遮罩类型
spriteRenderer.maskInteraction = SpriteMaskInteraction.VisibleInsideMask;
// 设置精灵处于哪个遮罩层
spriteRenderer.maskLayer = SpriteMaskLayer.Layer0;

这篇文档对您有帮助吗?

On this page