精灵遮罩组件用于对 3D/2D 场景中的精灵渲染器和文字渲染器实现遮罩效果。
参数 | 类型 | 说明 |
---|---|---|
sprite | number | 使用精灵的引用 |
alphaCutoff | number | 当前 mask 有效 alpha 值的下限(范围:0~1),即 sprite 的纹理中 alpha 值小于 alphaCutoff 的将被丢弃 |
influenceLayers | number | 当前 mask 影响的遮罩层,默认值为 Everything,表示对所有遮罩层都有影响 |
精灵遮罩与受遮罩影响的组件之间的层级关系一般分为以下三种:
influenceLayers | maskLayer | 是否生效 |
---|---|---|
Layer0 | Layer0 | 相等,生效 |
Layer1,Layer2 | Layer2,Layer3 | 有交集,生效 |
Layer4 | Layer5 | 无交集,不生效 |
在 层级面板 依次 右键 -> 2D Object -> Sprite Mask 即可快速创建一个包含精灵遮罩的节点。
在脚本中可以用如下代码使用精灵遮罩:
// 创建一个遮罩实体
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;