Phaser加载CSV文件调用createLayer报错:map.createLayer不是函数
解决Phaser中TypeError: map.createLayer is not a function的问题
这个错误的核心原因是你沿用了Phaser 2的API写法,但当前使用的是Phaser 3版本——Phaser 3已废弃createLayer方法,替换为静态/动态图层的专用创建方法。
修复步骤:
- 将代码中的
map.createLayer替换为map.createStaticLayer(适合无需动态修改瓦片的场景),若需要可编辑的图层则改用map.createDynamicLayer。
修改后的完整代码:
function preload () { this.load.image('tiles', './assets/drawtiles-spaced.png'); this.load.image('car', './assets/car90.png'); this.load.tilemapCSV('map', './assets/grid.csv'); } function create () { var map = this.make.tilemap({ key: 'map', tileWidth: 32, tileHeight: 32 }); var tileset = map.addTilesetImage('tiles', null, 32, 32, 1, 2); // 替换为createStaticLayer创建静态图层 var layer = map.createStaticLayer(0, tileset, 0, 0); }
补充说明:
createStaticLayer创建的图层性能更高,适合背景、地形这类不需要动态修改的元素;- 如果需要实现瓦片销毁、替换等动态操作,改用
createDynamicLayer即可。
内容的提问来源于stack exchange,提问作者Wojnys
相关产品推荐
相关产品推荐

