javascript - 如何从外部库导入已注册的 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
目标是让不同的游戏在库中重用相同的游戏对象。
解决方案
推荐阅读
- angular - 在 Angular 中重置 this.dataSource.filterPredicate
- javascript - 确认/取消 SweetAlert 都得到确认
- restructuredtext - 如何使用 rst2pdf 样式表右对齐部分编号
- python - 比较长度不等的字符串时返回差异索引
- html - 如何通过电子邮件模板禁用暗模式
- python - ValueError:形状(无,5)和(无,1000)不兼容
- python - 如何更新包含字典数据的列表?
- c++ - 在 C++ 中按名称访问结构字段的现代方法
- javascript -
- python - Snakemake:如何在没有显式输出文件的情况下创建规则,而只有指定的输入和日志文件?