如何存储和恢复无限世界?

How are infinite worlds stored and restored?

我正在尝试在 Unity 中编写具有无限世界的 2D 游戏。除了每个方向的 "infinite" 之外,它应该像 Terraria。因此,当玩家移动时,块会在旅途中生成、存储和加载。我的问题是:块是如何存储并随后加载到内存中的?我找不到与此主题相关的任何教程。我假设这么大的数组必须存储在磁盘上,但是磁盘 IO 不是很慢吗?假设我正在尝试在玩家周围加载一个由 5 个块组成的大正方形(玩家站立的中心块和每个方向 2 个块)。这是否意味着,如果玩家不断地在两个块之间来回移动,我将不得不继续加载和存储该已加载块的每一侧的 5 个块?会不会很慢?

你可以做的是,如果玩家距离 2 个区块,则加载区块,但除非玩家距离 4 个区块,否则不要卸载它们。

假设玩家向右走:(这里 X 是玩家,a b c.. 是区块,[] 是加载半径中的加载区块, () 是卸载半径内的加载块)

a b c (d) (e) [f] [g] [X] [i] [j] k l

如果他决定返回块 g,则不需要加载块 e(它已经是)并且不需要卸载块 j (不在卸载半径外)

a b c (d) [e] [f] [X] [h] [i] (j) k l

如果他想回到块h,同样,不需要加载或卸载任何块。所以他可以在没有任何 loaing/unloading.

的块之间来回跳转