如何解决文本/图像移相器 3 渲染问题
我是 Phaser 3 的新手。我遇到了一个问题,当我在本地主机上运行我的游戏时,文本会出现,但图像不会。我尝试了多种方法来加载图像,更改文件夹路径,更改与 src 文件夹相关的文件夹,重命名 png,确保路径正确,确保标签正确,尝试其他 png。开发工具在浏览器中没有显示错误。我使用包裹作为我的打包器,不确定这是否是问题所在。这是我的文件夹结构和浏览器外观的屏幕截图。关于我做错了什么的任何想法?
main.js
const Phaser= require('phaser');
const Game= require ("../src/scenes/Game")
var config = {
width: 800,height: 500,type: Phaser.AUTO,};
var game = new Phaser.Game(config);
game.scene.add("game",Game);
game.scene.start("game");`
Game.js
const Phaser = require("phaser");
class Game extends Phaser.Scene {
preload() {
this.load.image("wind","../assets/Wind.png");
}
create() {
const text = this.add.text(400,250,"hello world");
text.setorigin(0.5,0.5);
this.add.image(400,"wind");
}
}
module.exports = Game;
index.html
<html>
<head>
<title>A Storm's a Brewin</title>
</head>
<body>
<script src="./main.js"></script>
</body>`
package.json
{
"name": "stormbrewer","version": "1.0.0","description": "","main": "index.js","scripts": {
"start": "parcel src/index.html","test": "echo \"Error: no test specified\" && exit 1"
},"author": "","license": "ISC","dependencies": {
"parcel-bundler": "^1.12.5","phaser": "^3.54.0"
}
}
解决方法
当你写
this.load.image("wind","../assets/Wind.png")
,该路径相对于浏览器加载的文件的位置。
浏览器(通常)从 dist
文件夹加载文件,而不是直接从 src
加载。
我认为您可以通过更改资产文件夹并告诉 Parcel 如何打包您的资产以便 xxx/assets
位于 dist/assets
中来解决。
我通常使用parcel-plugin-static-files-copy,并与public
一起创建一个src
文件夹并将其放入package.json
...
"staticFiles": {
"staticPath": "public"
},...
文件夹结构
package.json
public
| assets
| | any.png
src
| Game.js
另一种解决方案可能是更改引用“提供”给 Phaser 的文件的方式(可能带有 require(...)
或其他内容)。我知道这是有可能的,但第一个解决方案足以满足我的目的,所以我没有深入解释它,但我认为值得一提。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。