Unity制作开放世界有许多实现方法,笔者使用的是Gaia插件,在商店或资源网下载安装好后,打开Unity重构项目,新建场景,打开Gaia-Manager

打开点击Standaed的CreateWorld面板,按图片设置你需要的参数好后确认,笔者使用WorldDesigner工作流

点击Hierarchy视图的WorldDesigner

在Inspector面板可以进行地形的生成操作(详细查询文档),我使用全部随机生成,铺满屏幕

 点击Hierarchy视图的地形加载管理器,在Inspector面板将加载范围输入为你的地形大小(创建地形时面板有显示),可以看到scene面板显示生成的地形

 地形生成完后,加载Gaia的第三人称控制器和其他需要配置的Gaia运行环境

 

现在玩家与基本的环境生成完毕了,但是有一个问题,如果地形块达到10000*10000的或以上的大尺寸,更恐怖的是随处可见的草树建筑物等,当你同时加载运行是十分占用内存消耗资源的,所以在制作大地型块时一定是要进行优化手段的处理的。

比较方便的就是Gaia插件已经内置了多地形块流式加载的手段,基于场景对地形块资源进行缓存加载使用并支持Addressables,同时内置了AOI算法对地块资源进行感知加载(详细原理不多叙,自行百度)

好了我们开始介绍它是如何使用的,点击地形加载管理器

 

我如何在玩家位置进行流程加载呢?点击第三人称控制器,查看TerrainLoader组件

因为我使用的512*512地块,我希望是玩家最多加载4个地块,8个伪地块,即1024*1024,多出的范围使用伪地块(地形加载管理器组件上或Standard右侧的Advanced面板打开Impostor进行创建),伪地形即是Gaia根据地形资源的网格等信息生成的游戏对象,具有地形的简化网格和基本贴图,并可以附加LOD等优化手段

所以我将基本范围设为256*256*256,伪范围设为512*512*512

一切准备完毕后完毕后,点击运行,可以通过wasd等进行第三人称控制器的控制(方便验证功能,后续可以自定义) 

 

可以看到,当我移动玩家时地块与伪地块会实时的加载 

 

好了 ,这就是Gaia对于开放世界地形构建的基本过程,本文只介绍插件的基本实现过程,对许多内容都没有详细介绍,Gaia是一个内容丰富与强大的插件,通过合理的应用可以创建出强大的效果,想要具体学习的同学可以登录他们的官网或查看视频进行学习!

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐