Phaser 3 核心
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/phaser-core-7gdp。
技能介绍
解决的痛点
Phaser 3 项目常面临三个核心问题:场景生命周期阶段职责模糊(如误在构造函数初始化状态导致重启后数据残留)、资源加载时机不当(在create()阶段访问未完成加载的资源触发undefined错误)、场景切换逻辑错误(混淆start与launch方法导致HUD覆盖游戏画面)。这些问题根源在于对Phaser 3架构设计的理解偏差。
核心能力与实现步骤
- 游戏配置与启动:通过
new Phaser.Game(config)创建实例,配置type: Phaser.AUTO实现WebGL/Canvas自动适配,设置初始场景数组。 - 场景生命周期管理:每个场景继承
Phaser.Scene,实现四阶段:
- init(data):重置运行时状态(如分数、生命值)
- preload():预加载资源(this.load.image()、load.spritesheet())
- create():初始化游戏对象、绑定事件监听
- update(time, delta):实时渲染与逻辑更新
- 资源加载机制:资源仅在
preload()阶段入队,在create()后可用;缓存全局共享,但加载器按场景隔离 - 跨场景数据传递:通过
this.registry存储全局状态(如最高分),或使用this.events.on()实现兄弟场景事件通信 - 场景切换控制:
- start:停止当前场景并启动目标场景(适合全屏切换)
- launch:并行运行新场景(适合HUD+游戏场景)
- switch:替换同名场景(保持状态)
- sleep/wake:暂停/恢复场景(保留状态)
适用边界与注意事项
- 不处理物理引擎:移动、碰撞、重力需搭配
phaser-arcade-physics;复杂刚体模拟使用Matter.js - 状态管理铁律:构造函数中初始化的状态会跨重启保留,必须在
init()中重置 - 回调this绑定:箭头函数自动绑定Scene上下文;普通函数需通过
.bind(this)或显式传递context参数 - 调试关键点:
- 检查控制台Phaser版本是否匹配3.90
- 通过game.scene.dump()查看场景状态机
- Network面板验证资源加载状态
- Phaser 2迁移注意:原
States已更名为Scenes,输入/摄像机/补间系统现在属于场景级私有实例
使用场景
- 新创建 Phaser 3 游戏项目,需要配置 Game 核心参数并启动第一个场景
- 实现场景切换逻辑时遇到状态残留或方法选择错误
- 在 preload 阶段加载图像/音频资源但 create 中无法访问
- 需要跨场景共享数据如玩家最高分或全局设置
适合人员
- Phaser 3 初学者:第一次用框架搭建游戏需要理解场景生命周期
- 独立游戏开发者:需要管理多个游戏场景的状态切换和资源加载
- 前端工程师:项目依赖 Phaser 3.90 需要正确配置 WebGL 和 Canvas
- 教学场景讲师:需向学员展示 Phaser 3 标准架构和最佳实践