用途:把 Phaser 3 项目迁移到 Phaser 4,并处理 Phaser 4 小版本(4.0→4.1→4.2)之间的升级。核心公共 API 基本保留,但需逐项修复破坏性变更与运行时陷阱。
主要能力:先更新依赖并核对版本(npm uninstall phaser、npm install phaser,以及 node -e "const p = require('phaser'); console.log(p.VERSION)"),然后用一系列 grep 扫描 src/ 定位问题,再按修复清单逐项处理:Geom.Point 全面改为 Math.Vector2(含 GetMagnitude→length()、Clone→clone()、SetMagnitude→setLength() 等映射,几何类相关结果也改返回 Vector2);Math.PI2 改为 Math.TAU,新增 Math.PI_OVER_2;Phaser.Structs.Map/Set 改用原生 Map/Set;DynamicTexture/RenderTexture 绘制后必须调用 render();移除的插件(Camera3D、Layer3D、Facebook Instant、旧 Spine)改用替代方案或删除;TileSprite 不再支持 setCrop,需要裁剪时改用 RenderTexture;删除 Create.GenerateTexture,改用 Graphics 生成纹理;移除 phaser-ie9 入口;v3 掩码类被移除,矩形裁剪改用独立摄像机,任意形状用 Mask filter 的 filters.internal.addMask(),且 Phaser 4 无 camera.setScissor(),用 setViewport()。
使用方式与限制:需按步骤顺序执行,最后调整 tsconfig(如 moduleResolution 用 bundler、移除 v3 的 typeRoots/types),并运行 npx tsc --noEmit 与 npm run dev 在浏览器验证场景、物理和动画。编译器通过不代表渲染正常,还需运行 playtest 脚本。资料提到参考文件(v3-to-v4-changes.md、runtime-gotchas.md、v4-release-notes.md)可查更完整变更与陷阱。