spine 设置材质属性

  • 适用于 cc3

  • 示例代码,from brawl

const mtrlCache = (this.armatureDisplay as any)._materialCache;
const tol = 10;
let cur = 0;
zz.timer.clearIntervalZ(this.flashIntervalId);
this.flashIntervalId = zz.timer.setIntervalZ(() => {
    if (this && this.isValid && mtrlCache) {
        cur++;
        for (const k in mtrlCache) {
            mtrlCache[k]?.setProperty("tarRate", (Math.abs(cur - tol / 2) * 2) / tol);
        }
        if (cur == tol) {
            zz.timer.clearIntervalZ(this.flashIntervalId);
        }
    } else {
        zz.timer.clearIntervalZ(this.flashIntervalId);
    }
}, 17 as double);
  • 【注意】不可以直接修改 customMaterial 或者 getMaterialInstance,需要修改_materialCache