首页 > 解决方案 > 如何从外部库导入已注册的 Phaser3 游戏对象;如何分发 Phaser3 游戏对象

问题描述

我想我的问题是“如何在可以重用的库中分发 Phaser3 GameObjects”。

这是问题:

下面的 inBase.js是一个 Base 自定义 GameObject,我希望它可以在很多 Phaser3 游戏中重复使用。

import Phaser from "phaser"

export default class Base extends Phaser.GameObjects.Graphics {
  constructor(scene, x, y) {
    super(scene, x, y)
    this.fillStyle(0x770000).fillRect(x, y, 100, 100)
  }
}

Phaser.GameObjects.GameObjectFactory.register("base", function (x, y) {
  const base = new Base(this.scene, x, y)
  this.displayList.add(base)
  return base
})

这就是我在场景中使用 GameObject 的方式。香草的东西。

import Phaser from "phaser"
import Base from "@localLibrary/base/lib/Base"   // <-- This fails to fire the `register` function. 
# import Base from "./Base"  // <-- This works. 

export default class PopitScene extends  Phaser.Scene  {
  create() {
    this.add.base(200, 200)
  }
}

当我尝试从不同的 repo 导入我的 GameObject 文件时,它无法触发该register函数,并且我得到的错误消息是:scene.add.base is not a function

在这种情况下,我已将库安装npm i file:../base在一个名为game1

project
  |- base
  |- game1
  |- game2

base目标是让不同的游戏在库中重用相同的游戏对象。

标签: javascriptshared-librariesphaser-framework

解决方案


推荐阅读