首页 > 解决方案 > 在 Phaser 3 中处理场景组件的约定是什么?

问题描述

假设我有一个游戏场景,CarLevelScene,这是一个我必须驾驶汽车一定距离的关卡。我在场景的一个角落有一个“剩余距离”仪表,在另一个角落有一个“剩余燃料”仪表。为了支持单一职责,我想从 CarLevelScene js 文件中提取它。此外,在更新时,这两个仪表都依赖于一些共享数据(因为燃料取决于行驶距离)。

现在,我基本上做这样的事情:

let fuelGuageState;
let distanceGuageState;
export default class CarLevelScene {
    init() {
        fuelGuageState = new FuelGuageState(this); // have to pass in this to create game objects in the scene. Or do I?
        distanceGuageState = new DistanceGuageState(this);
    }
    create() {
        fuelGuageState.create();
        distanceGuageState.create();
    }
    update() {
        ...
        let distance = someCalc(...); // possibly from some distance model object
        let fuel = someOtherCalc(distance, ...);
        fuelGaugeState.update(fuel);
        distanceGaugeState.update(distance);
    }
}

我的问题是,这是在 Phaser 3 中创建和使用组件的传统方式吗?从本质上讲,它将使场景成为组件的组织者,只需将正确的数据提供给每个更新方法。感觉有点臭。有时间耦合和大量的依赖管理。

是否有官方文档处理代码中组件的适当组织?

标签: phaser-framework

解决方案


推荐阅读