假设有地形的切割、blend、动态加载的需求,可阅读本文。 地形切割原理较为简单,但blend、动态加载也算比较麻烦,不如直接用插件。我采用的 Terrain Slicing Dynamic Loading Kit v4.0下载 该版本插件支持unity 4及以上,2018.2以下(unity2018.2之后不再支持js)。虽然地形切割部分2018.2就不支持了,但动态加载部分还是可用的。所以,也不影响。 想要支持2018.3的可使用 v4.4.0版本,但切割部分不支持2018.4。

第一步,导入插件

导入插件后,工具栏多了“Terrain”项,点击进去可查看,如下图

unity navigation 动态添加可走区域 unity3d动态加载地形_Slice

Assets中多了 Dynamic Loading Kit 项

unity navigation 动态添加可走区域 unity3d动态加载地形_unity_02

可运行下例子,看下动态加载效果。

unity navigation 动态添加可走区域 unity3d动态加载地形_unity_03

unity navigation 动态添加可走区域 unity3d动态加载地形_Slice_04

第二步,制作地形(已存在地形的话,可略过本步骤)

我自己简单制作了一个地形,如下图。放了小的灌木,草,没放树。

unity navigation 动态添加可走区域 unity3d动态加载地形_Slice_05

第三步,利用插件,切割地形

3.1 将地形拖拽到工程目录,制作成预设体

3.2 工具栏->Terrain ->Terrain Slicing Kit -> Slice Terrain ,弹出地形切割界面

unity navigation 动态添加可走区域 unity3d动态加载地形_动态加载_06

因为动态加载,需要用到预设体,所以最后的一项“Create Prefabs from Slice”也需要勾选,并设置位置。

最终设置界面如图所示

unity navigation 动态添加可走区域 unity3d动态加载地形_动态加载_07

注意,

1)Slice Dimensions ,为设置地形切割个数的,根据地形大小及视野进行设置。

2)最后的 Prefab Save Folder ,最后文件夹只能是Resources,否则后边动态加载有问题。3.3 最后设置完成后,点击 Slice Terrain 按钮,等待切割完成即可。

最后生成文件

unity navigation 动态添加可走区域 unity3d动态加载地形_Slice_08

unity navigation 动态添加可走区域 unity3d动态加载地形_动态加载_09

第四步,动态加载

4.1 建场景,建Dynamic Loading Manager,具体哪种可参数说明书,没啥大的区别。

4.2 为了简单,先拖拽个PlayerMoverFirstPersonController 预设体到场景,删除新建场景的相机

4.3 World设置与Active Grid 设置

unity navigation 动态添加可走区域 unity3d动态加载地形_地形动态加载_10

其他设置可以都默认,红框的得设置, Player Mover可以也可以不设置,但改变角色方向时,不会自动替换、卸载地形了,只会根据 Player的位置加载。World 的最重要设置:World Grid。必须设置,它是场景内地形prefab管理的来源。

需要新建一个 World Grid。在工程视图中,右键,“Dynamic Loading Kit”-> Create World Grid

弹出界面后,做设置

unity navigation 动态添加可走区域 unity3d动态加载地形_unity_11

红色框内的必须设置正确,否则就会无法找到资源。

设置完后,点Set Data 按钮,下边的“Data Status”变成“Set”就对了。可以点击 “Display Set Data in Log”按钮,显示下日志。我的日志如下图:

unity navigation 动态添加可走区域 unity3d动态加载地形_地形动态加载_12

都打对勾后才正确。

此时把创建的 World Grid 拖拽到 World 组件的 World Grid。第五 运行

unity navigation 动态添加可走区域 unity3d动态加载地形_地形切割_13

unity navigation 动态添加可走区域 unity3d动态加载地形_unity_14

随着角色的运动,地形动态加载的变化。下边的这个小视图,从demo中拖来的。

unity navigation 动态添加可走区域 unity3d动态加载地形_动态加载_15

想要永远无限的走,可勾选这两项。但地形上也就有重复的了。用不到。

----结束