Phaser 3.60.0-beta.22中如何修改Spine插槽颜色?
解决Phaser 3.60.0-beta.22中Spine插槽颜色修改的ReferenceError问题
- 问题根源:IDE不报错是因为TypeScript类型定义包含了
spine全局声明,但运行时Phaser并未将spine挂载到全局环境,直接访问spine.Color会找不到定义。 - 解决方案:从Phaser集成的Spine插件入口获取
spine对象,再创建颜色实例。
提供两种可行的代码写法:
写法1:通过Phaser的Spine命名空间获取
// 先从Phaser的Spine命名空间拿到spine对象 const spine = Phaser.GameObjects.Spine.spine; // 找到目标插槽 const slot = skeleton.findSlot('slot-name'); // 直接赋值颜色 slot.color = new spine.Color(1, 1, 1);
写法2:从已创建的Spine游戏对象中获取
如果已经在场景中添加了Spine对象,可以直接从该对象的spine属性取用:
// 假设已经创建了Spine游戏对象 const spineObj = this.add.spine(100, 200, 'your-spine-asset-key'); // 从对象中获取spine命名空间 const spine = spineObj.spine; // 找到插槽并修改颜色 const slot = spineObj.skeleton.findSlot('slot-name'); slot.color = new spine.Color(1, 1, 1);
补充:如果修改颜色后未立即生效,可调用slot.setColor(new spine.Color(r, g, b))或者触发骨架更新(部分复杂动画场景可能需要)。
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

