Godot - 如何在不花这么长时间的情况下加载 7,500,000 个图块?

Godot - how can I load 7,500,000 tiles without it taking so long?

我有一个世界,里面有 7,500,000 个方块。世界是 1500x5000,每个图块是 16x16 像素。如果我想加载一个游戏,我只是加载了所有需要很长时间的图块。有没有办法只加载玩家附近的瓷砖?就像 terraria 如何渲染它的所有图块一样。

要处理如此大量的图块,您需要在玩家移动时将您的世界分割成更小的 TileMap(手动或使用脚本)和 load/unload 块。这类似于 Minecraft 加载世界的方式,只是这次是 2D 的。据我所知,Terraria 也做同样的事情。

由于您需要 TileMaps 完全 loaded/unloaded(而不仅仅是 shown/hidden),因此您不能在此处使用 VisibilityNotifier 或 VisibilityEnabler 节点。但是,您可以使用 InstancePlaceholder 为您带来好处,因为它旨在标记 "placeholder" 可以按需加载的节点。要从编辑器中执行此操作,您可以右键单击场景树停靠栏中的任何节点,然后启用 Load as Placeholder.

如果在运行时加载块仍然导致卡顿,您还必须使用 ResourceInteractiveLoader class 在后台加载 TileMap 资源。