我目前正在使用 Python arcade 和 Tiled Map Editor 开发一款平台游戏,但我有一个问题:
这是我的 tmx,我将其保存为
json
文件:
如您所见,我位于“教程”层,这是一个对象层,我正在使用平铺地图编辑器文本工具来放置文本,但是当我运行我的
main.py
时,我得到了:
如您所见,教程图层内的文本对象未渲染,我无法提供所有代码,因为它有 1000 多行代码,但这是我的
draw
方法:
def on_draw(self):
self.clear()
self.camera.use()
self.scene.draw()
self.bullets.draw()
self.gui_camera.use()
score_text = f"Score: {self.player.score}"
arcade.draw_text(score_text, 10, 10, arcade.csscolor.BLACK, 18)
我像这样加载场景对象:
self.tile_map = arcade.load_tilemap(map_name, TILE_SCALING, layer_options)
self.scene = arcade.Scene.from_tilemap(self.tile_map)
没有引发错误,但文本对象只是不渲染
我看到了一些东西:我的教程图层已渲染,但我的文本对象未渲染
我正在使用
python 3.12.2
、Tiled 1.10.1
和 Arcade 2.6.17
但是,我的问题是为什么我的文本对象没有显示以及如何让我的文本对象显示
如有任何帮助,我们将不胜感激。
解决了! 问题是平铺地图编辑器文本工具仅用于在地图中做笔记,而不是在游戏中添加文本,这是我的解决方案:
如您所见,我没有使用平铺地图编辑器文本工具创建具有属性文本的对象,稍后使用 python arcade 进行渲染,我在
draw
方法中进行了更改:
def on_draw(self):
self.clear()
self.camera.use()
self.scene.draw()
self.bullets.draw()
for ubject in self.scene["Tutorial"]:
arcade.draw_text(ubject.properties['text'], ubject.position[0], ubject.position[1], arcade.csscolor.BLACK, 18)
self.gui_camera.use()
score_text = f"Score: {self.player.score}"
arcade.draw_text(score_text, 10, 10, arcade.csscolor.BLACK, 18)
你可能想知道为什么绿色箭头没有显示在我的关卡中,这基本上是因为我隐藏了
Tutorial
层。
解决方案来自:平铺地图编辑器官方文档