【问题标题】:Phaser 3 images in dev folder?开发文件夹中的 Phaser 3 图像?
【发布时间】:2019-08-09 22:58:13
【问题描述】:

我正在关注一个非常基本的 Phaser 3 示例,但问题是 dist 文件夹仅包含一个 bundle.js 文件,所有资产仍从 src 文件夹加载。

文件夹结构:

dist
  - bundle.js
src
  assets
    - bmo.png
  scenes
    - game-scene.ts

加载代码:

  export class GameScene extends Phaser.Scene {

  constructor() {
    super({key: "GameScene"});
  }

  preload(): void {
    this.load.image('bmo', './src/assets/bmo.png');
  }
}

但是现在图像是从src 文件夹加载的!这不对吧? 如何导出包含 html 文件和资产文件的游戏?

目前我使用npm run dev 运行 webpack 来测试游戏。

【问题讨论】:

  • 这是您的 TypeScript 文件的相对路径,但您可能需要一个编译步骤来从 publicdist 之类的文件夹中提供站点。如果您没有通过webpack 等将资产捆绑到该目录,请确保您可以从服务位置访问资产。
  • 谢谢,我编辑了这个问题。现在找到了图片,但我觉得奇怪的是游戏引用了src 文件夹来查找图片。

标签: javascript typescript phaser-framework


【解决方案1】:

尝试在 Webpack 中使用 file-loader

$ npm install file-loader --save-dev

添加文件加载器来设置你的 webpack 配置,例如:

module.exports = {
  module: {
    rules: [
      {
        test: /\.(png|jpg|gif)$/,
        use: [
          {
            loader: 'file-loader',
            options: {},
          },
        ],
      },
    ],
  },
};

然后,您可以在 TypeScript 文件中导入该文件,例如:

import img from './src/assets/bmo.png';

如果您对 Webpack 中的设置选项感到困惑,docs 中有很多示例。

【讨论】:

  • 谢谢,困惑来自于使用示例项目,但显然这并不是要实际导出游戏。
  • 如果是基本演示,可能不会。我知道这不是 TS 但this boilerplate 已经有文件加载设置。如果你检查他们的 Webpack 设置,你可以看到它是如何设置的。
  • 对不起,它还没有工作。当我import 图像时,我现在得到cannot find module './src/assets/bmo.png'。我尝试了各种路径的变体。我的路径自动完成表示路径是正确的。 file-loader 也不复制任何图像。
  • 还有一个问题,为什么html文件在根目录下?那不应该在dist 中吗?我看过样板,但这完全不同......
猜你喜欢
  • 2020-11-09
  • 2021-07-29
  • 1970-01-01
  • 1970-01-01
  • 2020-02-19
  • 1970-01-01
  • 2014-09-11
  • 1970-01-01
  • 2012-05-14
相关资源
最近更新 更多