第3 章 │ 创建第1 个Unity 项目 从本章开始,将创建一个切水果游戏项目,并在后面各章根据学习的内容不断完善 该项目功能,直至形成一个功能相对完整的游戏项目。在该游戏中,玩家可以使用手指或 鼠标在屏幕上滑动来模拟切割水果的动作,成功切割到飞过屏幕上的水果即可获得相应积 分。游戏中包含多种水果,每种水果会有不同的分数或特性。水果中通常会混入炸弹,如 果不小心切到炸弹,积分将减少并失去一定的生命值。游戏中会设置计时器,玩家必须在 规定时间内切割尽可能多的水果以获取更多积分。随着游戏进度的推进,游戏难度将逐渐 增加,如飞行物的速度增加,或水果品种增多等。 3.1 新建Unity 项目 3.1.1 新建3D 项目 打开Unity Hub 后,默认打开的是“项目”选项卡,单击该选项卡界面右上角的“新 项目”按钮,如图3-1 所示,就可以进入创建新项目界面。 图3-1 新项目创建按钮 在创建新项目界面的模板列表中,单击“3D 核心模板”。然后,在界面右侧进行项 目设置。建议选择有代表性的名称作为项目名称,例如FruitCutL。对于项目保存位置, 应保证选择的路径有充足的磁盘空间,然后单击右下角的“创建项目”按钮,如图3-2 所示。 创建好新项目后,在Unity Hub 的“项目”选项卡的项目列表中即可看到创建的新 项目,单击该项目名称,就可以在Unity 编辑器中显示该项目,如图3-3 所示。可以看 到这个新创建的Unity 项目的默认场景名称为SampleScene,该场景带有Main Camera 和 Directional Light 两个默认的游戏对象。 第3章 创建第1 个Unity 项目 虚拟现实程序设计(C# 版) 26 图3-2 创建新项目界面 图3-3 在Unity 编辑器中打开的新建项目 3.1.2 设置Unity 编辑器外观偏好 对于Windows 用户,可以在Edit 菜单中单击Preferences,弹出“偏好设置”窗口, 如图3-4 所示。在“常规设置”(General)选项卡中,将Editor Theme(编辑器主题)参数 值由原来的Dark 修改为Light,可以使开发环境变得更明亮。 第3 章 │ 创建第1 个Unity 项目 27 图3-4 Unity 编辑器外观偏好设置 3.2 设置背景参数 新建项目后,需要进行一些简单的场景和UI 设计,再通过脚本实现场景的动画效果。 场景设计包括场景背景参数设置、添加游戏背景和游戏对象等。 3.2.1 修改场景名称 新建项目后,在Hierarchy 窗口中就可看到默认的场景名称为SampleScene,如图3-5 所示。 在Project 窗口中单击名称为SampleScene 的场景图标,将其名字修改为main,如 图3-6 所示。修改场景名称后可以在Hierarchy 窗口中看到场景名称已经更改为main。层 图3-5 默认场景名称图3-6 修改场景名称 虚拟现实程序设计(C# 版) 28 级窗口包含两个默认的游戏对象:“主摄像机”(Main Camera)和“定向光”(Directional Light)。定向光主要用来模拟从无限远的光源处发出的光线,使用此种光源投射出的阴影 均平行排布,所以适用于模拟太阳光。 3.2.2 设置背景颜色 在Hierarchy 窗口中选择Main Camera 对象,在其对应的右侧Inspector 窗口中将 Camera 组件下的“背景色”(Background)属性值修改为黑色,再把Clear Flags 属性值修 改为Solid Color(见图3-7),该属性值可以在场景运行(Game 窗口)时,将场景空白处 显示为默认设置的黑色。 图3-7 设置主相机参数 3.3 设置游戏背景 3.3.1 添加游戏背景 为了使项目运行时呈现出良好的效果,还需要为场景添加游戏背景。在Hierarchy 窗 口空白处中右击,在弹出菜单中选择Create Empty 选项,如图3-8(a)所示,即可创建 一个默认名称为GameObject 的空对象,这里将其重命名为Background,如图3-8(b) 所示。 在Hierarchy 窗口中单击Background 游戏对象,在其对应的Inspector 面板中单击 Add Component(添加组件)按钮,在搜索框内输入mesh(网格)后,可分别选择Mesh Collider(网格碰撞体)、Mesh Filter(网格过滤器)和Mesh Renderer(网格渲染器)组件, 如图3-9(a)所示。将这三种网格组件都添加进来,如图3-9(b)所示。 第3 章 │ 创建第1 个Unity 项目 29 图3-8 重命名游戏对象 图3-9 添加网格组件 然后,单击Mesh Filter 组件下Mesh 属性后的圆形按钮,在弹出窗口中选择Plane,如 图3-10(a)所示。这样就为Mesh Filter 组件添加了一个平面网格,如图3-10(b)所示。 此时,在场景视图中就可以看到添加的游戏背景Background 对象,如图3-11 所示。 这时的Background 呈现玫红色,是由于没有为网格平面指定材质,发生了材质丢失。材 质是在虚拟环境中模拟物体物理性质的部分,如颜色、贴图、纹理、反射等。在实际开发 中,通常将材质的全部属性集合统称为材质球,通过设置和调整材质球的具体参数来模拟 不同的材质效果,使物体更加的逼真、有层次和生动。 虚拟现实程序设计(C# 版) 30 图3-10 添加网格属性值 图3-11 添加的游戏背景对象还未指定材质 3.3.2 添加材质球 添加材质球的方法有两种:一种是用户自己创建,另一种是直接使用已有的材质资源。 1. 创建材质 读者可以使用搜索引擎,搜索并下载一幅适合用作游戏背景的图片,本书案例中的游 戏背景图片是一幅木地板图片bg.png,也可以直接从资源包获取 游戏背景图片,如图3-12 所示。 在Project 窗口的Assets 文件夹中空白处右击,依次选择 Create → Folder,新建一个空文件夹,将其命名为Textury。采 用同样的方法,在Textury 文件夹内分别新建两个文件夹,并将 其命名为Background 和Materials,分别用来存放项目的背景资 源和材质资源,如图3-13 所示。 在Materials 文件夹内空白处右击,依次选择Create → Material,新建一个材质球,如 图3-14 所示。 将新建的材质球重命名为bg,然后,将准备好的游戏背景图片bg.png 拖曳到 Materials 文件夹内,如图3-15 所示。 单击材质球bg,将图片bg.png 拖曳到材质球bg 对应的Inspector 窗口中的Main Maps 组件下Albedo 属性前的方框内。在Inspector 窗口中,可以看到材质球发生了变化,也可 以在Materials 文件夹内看到材质球发生了变化,如图3-16 所示。 图3-12 游戏背景图片 第3 章 │ 创建第1 个Unity 项目 31 图3-13 新建文件夹 图3-14 新建材质球 图3-15 放置材质球图片 虚拟现实程序设计(C# 版) 32 图3-16 生成材质球 接下来,直接将材质球bg 拖曳到场景视图中的Background 游戏对象上,可以看到游 戏对象的材质发生了变化,如图3-17 所示。 图3-17 游戏对象的材质球发生变化 这时游戏对象Background 色彩看起来有点灰暗,为了使其显得更鲜亮一些,可以单 击project 窗口中的材质球bg,在其对应的Inspector 窗口中,选择Shader 属性的下拉菜单 (见图3-18(a)),然后依次选择Unlit → Texture,如图3-18 所示。 此时可以在场景视图中看到游戏对象Background 颜色较之前鲜亮了许多,如图3-19 所示。 2. 使用已有的材质资源 用户下载本书配备的资源包FruitCutL.zip 并解压,将刚才新建项目FruitCutL 下原来 的Assets 文件夹删除,复制解压后FruitCutL 文件夹下的Assets 文件夹,将其粘贴到新建 项目FruitCutL 所在的目录下,如图3-20 所示。 第3 章 │ 创建第1 个Unity 项目 33 图3-18 设置Shader 属性值 图3-19 设置Shader 属性值后的游戏对象效果 粘贴完资源包资源,再次回到Unity 工程项目界面时,Unity 会自动识别并导入新的 Assets 文件夹资源,如图3-21 所示。 图3-20 复制资源包资源图3-21 等待导入新的资源包资源 虚拟现实程序设计(C# 版) 34 导入完成后,可以在Project 窗口中看到导入的资源,如图3-22 所示。 图3-22 导入的资源包资源 在Project 窗口中,依次按文件夹路径:Assets → Textury → Background → Materials 打开,可以看到本书配备资源包中已经制作好的材质球资源bg,如图3-23 所示。 图3-23 资源包中的材质球资源 将材质球资源直接拖曳到Scene 视图的Background 对象上,即可看到Background 的 材质发生了变化,如图3-24 所示。