You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Phaser 3角色行走动画失效并冻结游戏,精灵表帧加载异常求助

Phaser 3 行走动画导致游戏冻结问题解决

问题场景

为游戏角色制作8帧行走动画,编写相关代码后,按下移动按钮游戏出现冻结,控制台反复提示:

generateFrameNumbers: Frame 0 missing from texture: peefSide
帧数逐次递增后出现读取undefined属性的错误。使用环境为VSCode + Phaser 3 + Arcade Physics。

相关代码如下:

加载精灵表

this.load.spritesheet('PeefSide', "assets/PeefSide.png", {frameWidth: 50, frameHeight: 60, startFrame: 0, endFrame: 7});

创建精灵

this.p1 = this.physics.add.sprite(500, 730, 'PeefSide');

创建动画

this.anims.create({
        key: 'walk',
        frames: this.anims.generateFrameNumbers('peefSide', { start: 0, end: 7, first: 0}),
        frameRate: 10,
        repeat: -1
    });

移动时播放动画

if(this.keyA.isDown) {
        this.p1.setVelocityX(-200);
        this.p1.anims.play('walk', true);
    }

错误原因

Phaser 3的纹理名称严格区分大小写:加载精灵表时使用的纹理名称是'PeefSide'(首字母大写),但创建动画时调用generateFrameNumbers传入的是'peefSide'(小写p),导致Phaser无法找到对应的纹理资源,进而反复尝试生成不存在的帧数据,最终引发游戏冻结。

修复方案

统一纹理名称的大小写,将创建动画代码中的'peefSide'改为'PeefSide',与加载时的名称完全一致。

修正后的创建动画代码

this.anims.create({
        key: 'walk',
        frames: this.anims.generateFrameNumbers('PeefSide', { start: 0, end: 7, first: 0}),
        frameRate: 10,
        repeat: -1
    });

额外检查项

  1. 确认assets/PeefSide.png路径正确,图片文件存在且未损坏
  2. 确保frameWidth和frameHeight参数与精灵表实际单帧尺寸匹配,避免帧切割错误

内容的提问来源于stack exchange,提问作者EmptyStone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 22:27:32