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