希望老师能讲解一下如何制作那种无缝大世界的场景的方法。比如类似魔兽世界那种地图,上古卷轴这些类型的。在百度上查了很多次都没有找到相关的课程或者讲解,如果很简单,没法当成一个课的话,放在Unity研究实验室里讲讲也好啊……
好的,老师们收到了
这是一个好问题,忍不住回答一下。
1.无缝大世界只是外在表现,实际上都是有缝的,现在的电脑性能还不足以实现完全无缝的一整张大地图,手机上就更不用想了。
2.这类大地图的实现其实都是分区块进行加载的,也就是只加载你人物角色周围的地图,比如《绝对求生》里的地图,有80公里X80公里的这么大,那么可以将整个地图切割成100X100的小块,那么每个格子就代表是800米。加载主角视野范围里的地图块即可,一般就是一个九宫格,也有做十六宫格的。
3.你可能想到,在跳伞阶段,可以看到全图,那是否需要全部加载呢?答案是确实需要全部加载,但这个时候加载的不是高精度的地图块,而是一个经过简化处理的简模(材质和模型都非常简单)。事实上,在绝地求生这类大场景的游戏里一般都有好几套不同精度的地图块(专业术语叫作:多层LOD)。当你人物在跳伞阶段的不同的高度时,会根据你与地图块的距离分别加载不同精度的地图块,这就是为什么你在跳伞阶段你屏幕上看到的地图有些地方糊得完全看不清楚的原因。此外,在下落的过程中,认真观察你会发现,地图块会有闪烁的情况出现,这就是程序在帮你切换不同精度的场景块。
4.具体的代码实现是一个非常复杂的系统,因为要做精细的内存管理,完全的动态加载卸载以及缓存。还有临界切换时的各种数据交换。所以不是一两个视频可以讲清楚的。但大地图实现基本的思路就是我上面所讲的这种方法。