Unity引擎的更新迭代速度很快,从2017年开始每个季度都会有次大版本的更新,比如2017.1,2017.2等,至今正式的大版本升级到了2018.2版本。Unity LTS版本将从TECH版本每年最后一个版本开始,持续支持二年的时间。如果读者实际准备发布上线的项目,为了稳定起见,建议使用LTS版本,即2017.4最新的版本,以保证项目最大限度地稳定运行。如果发现没有红色报错信息,基本可以确定大部分版本升级是成功的。......
2023-10-17
1)介绍
目的:通过尝试制作一款使用玩家角色把小球弹飞的简单小游戏,熟悉使用Unity进行游戏开发的基本流程。
软件环境:Unity 2018.2.16,Visual Studio 2017。
2)创建新项目
(1)启动Unity后将出现一个并列显示Projects和Getting started的窗口。单击窗口中央的New Project按钮或者右上方的NEW文本标签,窗口下半部分内容将发生改变,出现Project Name文本框等内容(见图8-1)。
图8-1 创建项目
(2)如果Unity曾经被启动过(比如我),窗口中央将不再显示New Project按钮,取而代之的是曾经载入过的项目文件列表。这时右上方的NEW文本标签依然会显示,可以通过它来创建项目。
接下来在指定的位置上依次输入项目名称、存储路径、项目创建者,单击右下角的创建项目,这样一个Unity项目就创建好了(见图8-2)。
图8-2 项目创建完成
图8-3 创建地面
提醒:虽然文件夹名称和项目可以取任意名字,但是最好不要使用汉字。因为如果路径中包含了汉字,有可能导致Unity编辑器在保存和读取文件时出错。
3)创建地面(创建游戏对象)
(1)在窗口顶部菜单中依次单击GameObject→3D Object→Plane按钮(见图8-3)。
(2)场景视图中央将出现一个平板状的游戏对象,同时层级视图中也增加了一项Plane(平面)(见图8-4)。
4)创建场景,保存项目
(1)观察Unity的标题栏,能发现在最顶端文本右侧有一个“*”符号。
图8-4 增加平面后的场景视图
这个符号表示当前项目文件需要保存。保存后该符号就会消失,之后如果又做了什么操作需要重新保存,该符号会再次出现。在窗口顶部菜单中依次单击File→Save Scene按钮(见图8-5)。
图8-5 保存
(2)保存完毕后,项目视图中也添加了GameScene项(如果无法看见,可以尝试单击左侧的Assets标签),如图8-6所示。
5)调整场景视图的摄像机
稍微调整一下摄像机的角度,使之能够从正面视角俯瞰我们刚才创建的地面对象(见图8-7)。
调整摄像机角度的方式如下:
(1)按住Alt键的同时拖动鼠标左键,摄像机将以地面为中心旋转。
(2)按住Alt和Ctrl键的同时拖动鼠标左键,摄像机则将平行移动。
(3)滚动鼠标滚轮,画面将向着场景深处前后移动。
图8-6 查看GameScene项
图8-7 调整摄像角度
6)创建方块和小球
(1)创建完地面后,接下来将创建代表玩家角色的小方块和球体游戏对象。
(2)在窗口顶部菜单中依次单击GameObject→3D Object→Cube和GameObject→3D Object→Sphere按钮。
(3)将方块移动到左侧,小球移动到右侧(拖动对象上的XYZ轴进行移动)。
(4)精确移动:在层级视图中选中小方块(小球也是如此)(见图8-8)。把检视面板中Transform标签下的Position的X值由0改为-2(见图8-9)。
图8-8 选中小方块
图8-9 X值修改
7)运行游戏
再次保存项目文件(返回步骤4))。保存完成后,让我们把游戏运行起来。
(1)确认游戏视图标签页右上方的Maximize on Play图标处于按下状态,然后单击画面上方的播放按钮(位于工具栏中间的播放控件中最左边的三角形按钮),如图8-10所示。
图8-10 Maximize on Play图标状态
(2)启动游戏后,将自动切换到游戏视图。场景视图中配置好的3个游戏对象将显示出来。若希望终止游戏运行,再次单击播放按钮即可(见图8-11)。
图8-11 播放
提醒:游戏启动后,再次进行编辑前请务必先终止游戏运行。
8)摄像机的便捷功能
在层级视图选中Cube后,将鼠标移动到场景视图中,然后按下F键,可以看到摄像机将向Cube移动(见图8-12)。
图8-12 移动摄像机
切记:选中某游戏对象后再按下F键,场景视图中的摄像机将移动到该对象的正面。当需要查看某游戏对象时这个方法会很方便。
9)修改游戏对象的名字
由于Cube是玩家操作的角色,我们称它Player;Sphere是玩家要弹飞的球体,我们称它Ball;作为地面的Plane,我们称它Floor。
单击层级视图中的Cube,当背景变为蓝色后再次单击,名称文本将变为可编辑状态,把Cube改为Player后按下回车(见图8-13)。
为了实现让玩家角色跳起来的效果,需要为游戏对象添加物理运动组件。在层级视图选中Player,并在窗口顶部菜单中依次单击Component→Physics→Rigidbody按钮(见图8-14)。
图8-13 修改Cube为Player(www.chuimin.cn)
图8-14 添加物理运动组件
这样Rigidbody组件添加到了玩家角色中,可以在检视面板中看到Rigidbody。
再次运行游戏(步骤7)),这一次玩家角色将快速落下并在撞到地面时停止(见图8-15)。
图8-15 游戏视图
11)让玩家角色跳起来(添加游戏脚本)
(1)由于该脚本用于操作玩家角色,所以命名为Player。从项目视图的Create菜单中选择C#Script,项目视图右侧的Assets栏中将生成一个名为NewBehaviourScript的脚本文件,刚创建完成时,将其名字改为Player(见图8-16)。
现在创建的脚本是一个空的脚本,即使运行也不会发生什么。为了能够将它运用在游戏中,必须做相应的编辑。
(2)选中Player脚本,单击检视面板上的Open按钮。这时Visual Studio 2017将会启动,Player.cs脚本被打开(我将Mono Develop编辑器换成了VS2017),如图8-17所示。
注:在项目视图中双击脚本项也能够启动编辑器(在这里是VS2017)。
可以看到,创建好的脚本文件已经包含了若干行代码(见图8-18)。这些代码是每个脚本都必需的,为了省去每次输入的麻烦,所以预先设置在文件中了。
图8-16 编辑空脚本
图8-17 启动编辑器
图8-18 创建的脚本
图8-19 脚本代码
(3)脚本编辑。
①脚本的开头有一行代码,确认public class后紧跟着的类名为Player(Unity规定C#脚本中类名必需和文件夹名相同),如图8-19所示。
②代码编辑脚本。新增一个jump_speed数据成员,重写Update方法:
③保存代码。在VS2017中编辑完代码后,必须对其加以保存才能使其改动生效。单击VS2017标题栏上的文件→保存按钮,保存完后退出VS2017(见图8-20)。
④回到Unity编辑器中,也进行保存(步骤4))。
⑤把新建的类组件添加到Player游戏对象上(见图8-21)。从项目视图中将Player脚本拖拽到层级视图中的Player对象上。这样就可以把Player脚本组件添加到玩家角色,此时在检视面板中也应该能看见Player标签。
⑥再次启动游戏。单击鼠标左键后,玩家角色将“嘭”地弹起来(运行前记得再保存一次项目文件),如图8-22所示。
12)修改游戏对象的颜色(创建材质)
(1)创建材质。
①在项目视图中依次单击Create→Material按钮,创建一个New Material的项。和脚本一样,把它的名字改为Player Material(见图8-23)。
图8-20 标题栏
②改变颜色。在检视面板中单击白色矩形,将打开标题为Color的色彩选择窗口(见图8-24)。
色彩选择窗口内的右侧有调色板,单击其中的红色区域,刚才的白色矩形将立即显示为选中的颜色(见图8-25)。选择完颜色后关闭选择窗口。
图8-21 Player标签查看
图8-22 游戏启动
图8-23 创建材质
图8-24 改变颜色
图8-25 选择颜色
(2)在项目视图中将Player Material拖拽到层级视图中的Player上。这相当于把Player Material分配给Player,场景视图中的游戏对象Player就变成红色了(见图8-26)。
图8-26 材质颜色设置为红色
(3)采用同样的方式创建绿色的Ball Material和蓝色的Floor Material,并分别将他们分配给Ball和Floor对象(见图8-27)。13)调整游戏画面的尺寸(调整播放器设置)
图8-27 创建绿色Ball Material和蓝色的Floor Material
图8-28 Free Aspect下拉菜单
(1)在Game标签左下方有Free Aspect文字,单击该处将出现下拉菜单,选中位于最下方的“+”菜单项,将打开一个标题为Add的小窗口(见图8-28)。
(2)在Width&Height文字右侧的两个文本输入框中分别填入640和480,确认无误后按下OK按钮(见图8-29)。
(3)关闭Add窗口后可以在下拉菜单中看见新增了640×480项,同时该项左侧显示有被选中的标记(见图8-30)。目前为止,我们已成功将游戏画面尺寸设置为640像素×480像素了。
(4)运行游戏(运行前记得先保存),如图8-31所示。
图8-29 Width&Height设置
图8-30 640×480项选中效果
图8-31 游戏运行
有关虚拟现实理论基础与应用开发实践的文章
Unity引擎的更新迭代速度很快,从2017年开始每个季度都会有次大版本的更新,比如2017.1,2017.2等,至今正式的大版本升级到了2018.2版本。Unity LTS版本将从TECH版本每年最后一个版本开始,持续支持二年的时间。如果读者实际准备发布上线的项目,为了稳定起见,建议使用LTS版本,即2017.4最新的版本,以保证项目最大限度地稳定运行。如果发现没有红色报错信息,基本可以确定大部分版本升级是成功的。......
2023-10-17
移动VR一般受到一些设备的限制,操作方式比较有限。现在需要添加移动VR专属的角色控制脚本。运行游戏,检测移动VR的编辑器模拟模式。角色可以顺利跟随导航标识移动到目标位置。图9-121确定Mouse Control是否勾选图9-122检测移动VR的编辑器模拟模式在VRUIPanel中有这么一段代码:主要就是为了Cardboard而实现的Cardboard输入操作就是通过这个Input.GetTouch来实现的。......
2023-10-17
图8-32Ball脚本创建1)概要前面创建了一个游戏项目,并且创建了玩家角色和小球这些游戏对象,还通过添加游戏脚本实现了小方块的弹跳。图8-33游戏开始状态图8-34Ball项文本变为蓝色图8-35多出一个小球对象将Player和Floor游戏对象也做成预设。图8-37创建文件夹并修改其名称图8-38移动Player预设和Floor预设至Prefabs文件夹将预设Ball Prefab拖拽到Prefabs文件夹下。图8-39保存文件夹回到Assets图8-40游戏对象命名5)发射小球在窗口顶部菜单中依次单击GameObject→Create Empty。......
2023-10-17
Unity中可以扩展的相机属性●清除标记:决定场景的哪个部分需要清除。你可以创建多个相机并赋予它们不同的深度。如果当前相机没有设置天空盒,它将缺省使用在渲染设置中的天空盒。武器相机的Clear Flags应该被设置为仅深度。为了使UI显示在所有其他相机视的顶部,你还需要设置Clear Flags和Depth only并确定相机的深度比其他相机的高。图7-53景深相机正交相机。......
2023-10-17
实例化预设使用上面章节中描述的创建预设的方法。一旦你创建了预设,你就可以简单快速地得到一个预设的拷贝,称为实例。为了创建任何预设的一个实例,从工程视图中拖动一个预设到层次或场景视图中。添加组件和脚本当你选中任何预设或物体时,你可以通过使用组件来向其中添加一些额外的功能。脚本也是组件的一种类型。缺省情况下脚本也包含在组件菜单中。你可以通过Components→Camera-Control来找到它。......
2023-10-17
在Assets→Audio文件夹下,右击Create→AudioMixer。只要在主角受伤时播放音效就可以了,开枪的声音同理。刚刚制作的AudioMixer还没有用到,现在我们开始制作,双击AudioMixer,添加一个SoundEffect。在AudioMixer添加一个Music用来控制背景音乐,SoundEffect用来控制音效,Master用来同时控制二者。图8-261enemies放到怪物的AudioSource的output图8-262添加组件图8-263新建脚本MixLevel图8-264把代码放至Canvas回到MasterMixer,单击volumn,选择exposed。图8-267添加music、sound脚本代码回到UI界面里面的slider条,按照不同的slider条功能添加不同的函数。......
2023-10-17
图9-71创建游戏管理器的逻辑脚本游戏胜负逻辑是与GameManager等脚本关联起来的。图9-76添加Look At Target组件运行游戏,发现收集物状态UI已经可以正常显示,面向摄像机了。图9-78添加Wall Mover组件图9-79组件关联在Scripts文件夹内右键Create→C# Script,重命名GoalZone,用于处理到达终点的逻辑。找到VR Win Panel→Exit Game Button上的Button组件,设置On Click事件调用为Game Manager UI→GameManager.ExitGame方法。图9-84设置完成的效果显示成功拾取到4个盾牌收集物到达GoalZone,也会弹出VR Win Panel的UI,可以进行一样的操作。......
2023-10-17
尝试添加一个刚体到刚创建的物体上。选择该物体并从菜单中选择Component→physics→Rigidbody。它们使用一个粒子发射器,粒子动画和粒子渲染器来创建一组移动的粒子。音频剪辑是一个引用属性。移除组件如果你想移除一个组件,在检视面板的头部使用option-或右击然后选择移除组件。例如,如果你想访问变换组件的变换功能,你只需要使用transform.Translate()或gameObject.transform.Translate()。使用GetComponent()有许多组件不能成为一个游戏物体类的成员。通过调用GetComponent并存储一个引用到结果中。......
2023-10-17
相关推荐