4.1 创建基础的游戏场景
我们先了解如何使用Unity内置的基本游戏对象和编辑器来创建场景,以及如何充分利用Asset Store中的游戏资源。
4.1.1 Unity中的地形引擎
Unity中内置了一个地形引擎系统,可以让开发者快速给游戏添加基础的地形和地貌。在游戏运行时,Unity内置的编辑器中的地形渲染经过了高度优化,减少了对系统资源的消耗。当然,这套地形引擎系统对开发者也是十分友好的。通过使用内置的相关工具,开发者可以在很短的时间内快速创建大场景的地形。图4-1显示了使用Unity内置地形引擎所创建的游戏场景。
图4-1 使用Unity内置地形引擎所创建的场景
我们接下来学习如何具体使用地形引擎。
1. 创建基础地形
打开Unity,创建一个新的项目,并将其命名为MyWorld。
在浏览器中打开Unity Asset Store(https://assetstore.unity.com/),在搜索栏中搜索Standard Assets,然后下载并导入当前的项目。具体操作步骤可以参考第2章的相关内容,这里不再赘述。
接着用类似的方式在Asset Store中搜索Terrain ToolKit 2017,从而找到官方提供的地形资源包,下载并导入项目。最后在Asset Store中搜索Terrain Tools Sample Asset Pack,用相同的方式将该资源包下载并导入项目,如图4-2所示。
图4-2 导入Terrain Tools Sample Asset Pack
注意
为了确保所有资源导入成功并且没有出现版本冲突,我们可以尝试切换到默认的SampleScene场景,然后点击工具栏上的“播放”按钮进入游戏预览模式。如果Console视图中没有出现任何红色错误提示,就说明资源导入成功了。
在Project视图中的Assets文件夹下创建一个子文件夹,将其命名为Scenes。在菜单栏中依次选择File→New Scene命令(或快捷键Ctrl+N)创建一个新的场景,然后选择菜单栏中的File→Save Scene命令,将其保存在Assets文件夹下的Scenes子文件夹中,并将其命名为MainScene。
在Hierarchy视图中右击,随后选择3D Object→Terrain命令,此时可以看到在Scene视图中出现一个空白的地形,如图4-3所示。
图4-3 创建的空白地形
在Hierarchy视图中选择Terrain对象,在Inspector视图中查看Terrain组件下的相应设置按钮,如图4-4所示。
图4-4 Terrain组件下的设置按钮
在这里可以看到有5个基本的按钮:第1个用于创建临近地形;第2个用于绘制地形;第3个用于绘制树木;第4个用于绘制细节;第5个用于设置地形的一些属性,比如长宽比例和分辨率等。我们来看一下效果。
点击第1个按钮,可以在当前地形的周围看到黄色的线框,用鼠标点击任何一个线框,就会在当前地形的附近添加一个新的地形。通过这种方式,我们可以快速创建更多地形,如图4-5所示。
图4-5 创建邻近地形
点击第5个设置按钮,将Mesh Resolution下的Terrain Width(地形宽度)和Terrain Length(地形长度)均设置为1200,将Terrain Height(地形高度)设置为600,如图4-6所示。
图4-6 设置地形属性
点击第2个按钮可以绘制地形。首先从下拉列表框中选择Raise or Lower Terrain,然后在Brushes中选择第3个圆形的画笔,将Brush Size(画笔尺寸)设置为50,Opacity(透明度)保持默认值50,如图4-7所示。
图4-7 设置地形绘制画笔的属性
将鼠标移动到场景视图中的地形上,可以看到地形上出现一个蓝色的圆形区域,长按鼠标左键可以绘制类似山脉的地形。如果同时按住Shift键和鼠标左键并拖动,即可降低特定区域的地形高度,制作出湖泊的地形,如图4-8所示。
图4-8 绘制基础地形
当然,大家也可以在Inspector视图中选择Brushes的样式,设置Brushes的大小。我们可以在Scene视图中绘制出不同的山脉和细节。这里不再一一赘述,读者可以自行尝试。
在下拉列表框中选择Paint Texture选项,然后点击Edit Terrain Layers...按钮,选择Create Layer选项,在弹出的对话框中选择GrassRockyAlbedo,就添加了新的地形纹理,如图4-9所示。
图4-9 添加地形纹理
2. 添加树木和植被
仅仅有地表还不够,环境还是显得有点单薄。使用Unity的地形引擎可以轻松地向地表添加各类树木,添加的方式和用笔刷创建地形的方式类似,但注意所添加的树木是3D对象。Unity使用了特殊的优化技巧,可以在场景中添加数以千计的树木,但仍然能保证游戏的运行帧速。图4-10显示了一个有非常多树木和植被的场景。
图4-10 添加了很多树木和植被的场景
在地表添加树木很简单,首先在Hierarchy视图中选中刚才的Terrain对象,然后在Inspector视图中的Terrain组件下点击第3个图标,如图4-11所示。
图4-11 点击第3个图标以添加树木
接下来点击Edit Trees...,选中Add Tree,点击Tree Prefab右侧的小圆圈,选中刚才所导入的Unity标准游戏资源中的树木预设体,比如Broadleaf_Desktop,最后点击Add按钮确认,如图4-12所示。
图4-12 添加树木预设体对象
在绘制之前,我们可以调整Brush Size(笔刷大小)和Tree Density(密度)等参数,然后使用类似笔刷创建地形的方式在地表上添加树木。我们也可以单击某个空白区域种下一棵树,然后按住鼠标左键拖出一排树,如图4-13所示。
图4-13 在地表上添加树木
添加植被的方式也很简单,在Inspector视图的Terrain下单击第4个小图标,如图4-14所示。
图4-14 点击第4个小按钮以添加植被
在Inspector视图的Details部分单击Edit Details按钮,从下拉列表中选中Add Grass Texture,然后点击Detail Texture旁边的小圆圈,选中之前导入的植被纹理,比如Grass-Frond01AlbedoAlpha,最后点击Add按钮,如图4-15所示。
图4-15 设置要添加的植被
在绘制之前,同样可以调整相关的参数,然后在地形上单击或按住鼠标左键拖动添加植被,如图4-16所示。
图4-16 添加植被后的效果
除了使用Unity自带的树木和植被,我们还可以使用第三方工具SpeedTree创建更丰富多彩的树木和植被。关于该工具的详细介绍,读者请参考链接:http://www.speedtree.com/unity/。
3. 添加水
在之前绘制地形的时候,我们曾绘制了一个大坑,此时可以将水的效果添加到这个坑中。
在Project视图中依次选择Assets→Standard Assets→Environment→Water(Basic),找到Prefabs子文件夹,将其中名为WaterBasicDaytime的预设体拖到Scene视图下的坑中。
接着在Hierarchy视图中选中刚才添加的水预设体,然后使用工具栏中的缩放工具使其覆盖整个坑,最后使用移动工具调整水的高度,使其移动到合适的高度,如图4-17所示。
图4-17 添加了水预设体后的效果
除了使用Unity内置的地形引擎,在Asset Store中还有一些非常优秀的第三方地形编辑插件,如Gaia。我们可以使用该插件快速创建复杂但效果很接近真实的地形。图4-18显示了使用Gaia插件所生成的地形。
图4-18 使用Gaia插件生成的地形
4.1.2 基本几何体的使用
除了地形编辑器,Unity还提供了一些基本几何体。我们可以使用这些基本几何体快速制作游戏的基本原型,包括物品和场景等。
接下来,我们通过一个简单的示例学习如何创建和使用基本几何体。
在Unity中打开此前创建的MyWorld项目,使用快捷键Ctrl+N新建一个场景,保存该场景,并将其命名为BasicObjectScene。在Hierarchy视图中依次选择BasicObject-Scene→Sphere命令,在场景中新建一个球体,如图4-19所示。
图4-19 在场景中新建一个球体对象
在Project视图中右击Assets文件夹,选择创建一个新的子文件夹,将其命名为Materials。然后右击该子文件夹,在快捷菜单中依次选择Create→Material命令,将其命名为MyMaterial,如图4-20所示。
图4-20 新建一个材质MyMaterial
单击选中MyMaterial,在Inspector视图中点击Albedo左边的小圆圈,在弹出的Select Texture对话框中选择所需的材质贴图,比如这里选择的GlassStainedAlbedo。
按住鼠标左键不放,把MyMaterial材质拖动到Scene场景中的小球上,此时小球会显示添加了材质后的效果,如图4-21所示。
图4-21 将材质赋予小球后的效果
注意
在对场景做了调整之后,请记住养成随时使用快捷键Ctrl+S保存修改的习惯。
4.1.3 添加天空盒
Unity新建的项目场景中默认提供一个基本的天空盒效果。我们可以将其更改为自己想要的天空盒。
回到Unity,在浏览器中打开Unity Asset Store(https://assetstore.unity.com/),在搜索栏中输入skybox,然后按回车键,可以看到大量的天空盒。这里选择Fantasy Skybox FREE插件添加天空盒,如图4-22所示。
图4-22 在Asset Store中找到Fantasy Skybox FREE插件
点击Add to My Assets,然后点击Open in Unity,最后在Unity中打开Package Manager,下载并导入项目。
在菜单栏中依次选择Window→Rendering→Lighting Settings命令,在Environment下的Skybox Material部分点击右侧的小圆圈,选择刚才导入的天空盒,如FS000_Day_02,可以看到场景发生了明显的变化,如图4-23和图4-24所示。
图4-23 设置天空盒
图4-24 更改天空盒后的场景