我正在尝试在 Unity 中编写具有无限世界的 2D 游戏。它应该像泰拉瑞亚一样,除了在各个方向上都是“无限”的。因此,当玩家移动时, block 会在旅途中生成、存储和加载。我的问题是: block 是如何存储并随后加载到内存中的?我找不到与此主题相关的任何教程。我假设这么大的数组必须存储在磁盘上,但是磁盘 IO 不是很慢吗?假设我正在尝试在玩家周围加载一个由 5 个 block 组成的大正方形(玩家站立的中心 block 和每个方向 2 个 block )。这是否意味着,如果玩家不断地在两个 block 之间来回移动,我将不得不继续加载和存储该已加载 block 的每一侧的 5 个 block ?会不会很慢?
最佳答案
你可以做的是,如果玩家距离 2 个区 block ,则加载区 block ,但除非玩家距离 4 个区 block ,否则不要卸载它们。
假设玩家向右走:(这里 X
是玩家,a b c..
是 block ,在 []
是加载半径内的加载 block ,()
是卸载半径内的加载 block )
a b c (d) (e) [f] [g] [X] [i] [j] k l
如果他决定回到 block g
,那么 block e
不需要加载(它已经是)和 block j
没有卸载(它不在卸载半径之外)。
a b c (d) [e] [f] [X] [h] [i] (j) k l
如果他想回到 block h
,同样,不需要加载或卸载任何 block 。所以他可以在 block 之间来回跳动而无需任何加载/卸载。
关于c# - 如何存储和恢复无限世界?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45137624/