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

时间:2017-07-17 06:46:58

标签: c# unity3d io procedural-generation

我正在尝试在Unity中编写一个具有无限世界的2D游戏。它应该像Terraria一样,除了各个方向的“无限”。因此,当玩家移动时,随时生成,存储和加载块。我的问题是:如何存储块然后加载到内存中?我找不到任何与此主题相关的教程。我假设这样的大型数组必须存储在光盘上,但是光盘IO不是很慢吗?假设我试图在玩家周围加载5个大块的大块(玩家站立的中间块和每个方向2个块)。这是否意味着,如果玩家继续在两个块之间来回走动,我将不得不继续加载并存储来自该装载件的每一侧的5个块?那不是很慢吗?

1 个答案:

答案 0 :(得分:1)

如果玩家距离大块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

如果他想再次返回chunk h,则不需要加载或卸载任何块。所以他可以在没有任何借出/卸载的情况下在大块之间来回跳跃。