Unity3D塔防游戏论文

更新时间:2024-05-18 17:53:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

基于Android平台的塔防游戏设计

Design The Tower Defense Game Based On Android Platform

学生姓名: XX 学生学号: 107102XX 专业名称: 计算机科学与技术 指导教师: XX(副教授)

计算机与信息工程学院

2014年6月16日

独创性声明

本人声明所呈交的毕业设计(论文)是本人在指导教师指导下进行的研究工作和取得的研究成果,除了文中特别加以引用标注之处外,论文中不包含其他人已经发表或撰写过的研究成果,没有伪造数据的行为。

毕业设计(论文)作者签名: 签字日期:2014年6月16日

毕业设计(论文)版权使用授权书

本毕业设计(论文)作者完全了解学校有关保留、使用论文的规定。同意学校保留并向有关管理部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权天津城建大学可以将本论文的全部或部分内容编入有关数据进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本论文。

(保密的毕业设计(论文)在解密后适用本授权说明)

毕业设计(论文)作者签名: 指导教师签名:

签字日期:2014年6月16日 签字日期: 2014年6月16日

摘 要

Android是一种基于Linux的自由及开放源代码的操作系统,Unity3D是最近几年非常热门的一种跨平台能力强的开发引擎,被广大游戏开发者所喜爱。在目前的Android手机应用开发界,Unity几乎成为Android标准工具。

本文将展示一个用Unity软件来设计和开发Android塔防游戏的全过程。按照游戏的开发思路,从相关知识介绍、游戏设计、游戏实现到软件测试一步步展开工作,完成毕业设计的最终作品。本文将讲述的重点放在游戏实现这一环节,从第一个场景建立开始,到模型的导入,讲述脚本的编写等具体细节,直到项目完成;游戏的测试将在Unity3D软件中,PC上和Android设备上分别进行测试,并分析测试结果。 关键词:Android;Unity;塔防游戏

ABSTRACT

Android is a Linux-based free and open source operating system, Unity3D is very popular in recent years, a cross-platform capability development engine, being loved by the game developers. In the current Android mobile application development circles, Unity has almost become standard Android tools.

This article shows a Unity of the software to the whole process of designing and developing Android Tower Defense game. Along the lines of game development, from relevant knowledge by testing, game design, game achieved step by step work, and completed the graduation design of the final product. The focus of this paper will describe in-game to achieve this step, starting from the first scene to establish, to import the model about details such as script writing, until the project is completed in Unity3D software, the game tests, were done on the PC and on your Android device to test and analyze the test results. Key words:Application Development;Android;Unity;Tower Defense

目 录

第1章 绪论 .............................................................................................................................. 1 1.1 选题的目的和意义 ......................................................................................................... 1 1.2 国内外的发展状况 ......................................................................................................... 1 1.3 论文组织结构 ................................................................................................................. 2 第2章 3D游戏的技术知识 .................................................................................................... 3 2.1 3D图形库 ........................................................................................................................ 3 2.2 物理引擎 ......................................................................................................................... 3 2.2.1 物理引擎简介 .......................................................................................................... 3 2.2.2 物理引擎基本架构 .................................................................................................. 4 2.3 Unity3D ............................................................................................................................ 5 2.3 Unity3D简介 ............................................................................................................... 5 2.3 Unity3D基本概念 ....................................................................................................... 5 第3章 游戏设计 ...................................................................................................................... 7 3.1 游戏创意 ......................................................................................................................... 7 3.2 游戏框架结构设计 ......................................................................................................... 7 3.3 游戏层次结构设计 ......................................................................................................... 7 第4章 游戏实现 ...................................................................................................................... 9 4.1 场景渲染实现 ................................................................................................................. 9 4.2 地形 ................................................................................................................................. 9 4.3 光照和场景元素 ........................................................................................................... 11 4.4 怪物通道 ....................................................................................................................... 12 4.5 摄像机 ........................................................................................................................... 13 4.6 游戏UI界面 ................................................................................................................. 15 4.7 路点建设 ....................................................................................................................... 18 4.8 敌人 ............................................................................................................................... 20 4.9 敌人生成器 ................................................................................................................... 21 4.10 防守单位 ..................................................................................................................... 22 4.11 生命条 ......................................................................................................................... 23 4.12 自定义按钮 ................................................................................................................. 25 第5章 游戏测试 .................................................................................................................... 27 5.1 在Unity3D中运行测试 ............................................................................................... 27 5.2 封装打包测试 ............................................................................................................... 27

第2章 3D游戏的技术知识 模块中使用凸体算法和射线检测算法得到精确的碰撞信息。

2.3 Unity3D

2.3.1 Unity3D简介

Unity3D是由Unity Technologies开发的一款全面整合的专业游戏引擎,其具有的功能使得开发人员可专注于游戏的设计而忽略底层的技术实现,达到快速开发的目的。Unity类似于Director,Blender game engine, Virtools 或 Torque Game Builder等利用交互的图型化开发环境为首要方式的软件其编辑器运行在Windows 和Mac OS X下。其主要的特色有:

图形动力:内部封装了DirectX和OpenGL图形渲染库,并附带一些常用的渲染组件及着色器脚本。

物理仿真:Unity3d不但整合了Nvidia PhysX物理引擎,并在其基础上封装了游戏中常会用到的物理组件,如碰撞体、连接体等。

跨平台性:可发布游戏至Windows、Mac、iOS、Android、Xbox、Wii或PS3平台,也可以利用Unity web player或者Flash插件发布网页游戏,支持Mac和Windows的网页浏览。

资源商城:开发人员可在资源商城中购买其他人开发的资源(代码、模型等),进行高效复用。

资源服务器:Unity资源服务器是一个附加的版本控制的产品,但比起SVN更适合游戏团队中不同职位的人员共同使用(程序、策划、美术)。

性能分析器:引擎中自带一个Profiler分析器,开发人员可在编辑器或者设备连线进行性能分析CPU和GPU不同阶段的效率。

2.3.2 Unity3D基本概念

一个完整的Unity3d程序是由若干个场景(Scene)组合起来的,每个场景中又包含有许多游戏对象(GameObject),每个对象可以具有若干组件(Component),其中的继承自MonoBehavior的脚本组件进行初始化、更新等操作,而我们在场景所看到的内容是由摄像头(Camera)来呈现并控制的。

场景(Scene):场景是Unity3D程序的基本组成单位,任何一个Unity3D程序都是由若干场景组合而成,程序通过脚本在这些场景之间跳转。场景通过场景图的形式组织,场景图实际上是一种树形结构,其中每个节点就是一个游戏对象。对象与对象之间存在父子关系,即当父级对象移动、旋转、缩放时,子级对象也跟着一起变换,如图2-4所示。

5

第2章 3D游戏的技术知识

图2-4 旋转一个父节点同时它的子节点也跟着旋转

游戏对象(GameObject):在场景中按照场景图形式组织,场景图实际上是一种树形结构,树形层次结构中的节点,加入的特定组件后就成了有实际功能的对象,如可渲染网格、摄像机、光源等,游戏对象可以打包成.prefab格式的文件方便复用。

组件(Component):组件可以是网格(Mesh)、光源(Light)、摄像机(Camera)、粒子系统(Particle)、物理碰撞体(Collider)、布料(Cloth)、连接体(Joint)、声音(Audio)、动画(Animation)以及最重要的脚本(Script)。Unity3D的设计是以面向对象理论为基础,Unity3D支持C#、JavaScript和Boo三种脚本语言,如果对象继承自MonoBehavior脚本对象,生命周期将交给Unity3D来管理,如图2-5所示。

图2-5 MonoBehavior的生命周期

6

第3章 游戏设计

第3章 游戏设计

3.1 游戏创意

随着移动硬件设备的日益强大,并且移动平台技术在这几年得到迅猛发展,移动平台上的游戏也出现了惊人的增长,轻量级、微创新、时间碎片化一直是移动游戏的发展趋势。

笔者按照这些思路产生了制作一款新的3D塔防游戏的想法,游戏同样遵从以上三个特点,下面是简单的游戏策划:

游戏名称:《五岳乾坤》 游戏类型:3D塔防益智类游戏 游戏平台:PC、Android 游戏模式:过关模式

游戏玩法:玩家有初始经济10,可以在开始建立两个防御塔,怪物进入路线后,一旦进入防御塔的攻击范围,会被防御塔攻击,直到怪物血量减少到0,每死亡一个怪物,经济会加2,这样,可以继续建造防御塔。每一波结束后,下一波怪物会比上一波怪物的血量更多,这就需要建造更多防御塔。

游戏操作:鼠标前后拖动来查看地图各个地点,点击防御塔建造按钮然后点击空地可以建造防御塔。

3.2 游戏框架结构设计

如前文所述,一个游戏包含多个场景,玩家根据当前的游戏进度和选项进入不同场景。而游戏模块为游戏提供了一些必须用到的功能,这些功能,都是完全独立与所有的场景存在的,它们并不知道到底有多少关卡,关卡的内容是什么,它们的主要工作,就是与游戏的控制单元进行信息的交换,从而支持游戏的进行。

塔防游戏没有复杂的游戏系统,更加侧重于游戏可玩性的设计,并且由于使用Unity3D引擎,省去了许多底层模块的设计,其中核心的模块为:图形渲染、物理仿真。

3.3 游戏层次结构设计

前文提到Unity3D中每个场景按照树形层次结构组织游戏对象,并且每个游戏对象可以拥有若干组件。所以整个游戏系统的实现必须遵守这种规范,在这种规范下为了符合软件设计的高内聚、低耦合的原则,使用MVC模型设计了一套游戏的层次结构,这样的好处是使游戏的结构清晰简单,三层之间互相隔离、互不影响,日后功能的扩展方便。 如图3-1所示。

7

第3章 游戏设计 cmp sequence 视图层Hierarchy:MainCameraGameObject2GameObject3……控制层Component:UIManagerNetworkManager……?use?逻辑层Component:Component1Component2Component3Component4Component5…… 图3-1 游戏层次结构图

游戏系统分为三个层来设计,分别是:

视图层:主要为加入到场景层次结构的游戏对象,这些对象常常是渲染对象或摄像机。

控制层:在主摄像机或者空对象中加入的管理脚本组件,这些脚本主要是针对对应的功能模块的进行控制及与其他功能模块进行通信,如界面管理类、网络联机管理类。

模型层:主要是在渲染对象中加入的逻辑脚本组件,这些脚本对游戏对象进行逻辑处理。

8

第4章 游戏实现

第4章 游戏实现

4.1 场景渲染实现

考虑到游戏的需求,整个场景主要包括几类渲染对象,如天空盒、水面、地形、外部导入的3D模型、投影、粒子系统等,如图4-1所示。

图形渲染天空盒水面地形3D模型投影粒子系统 图4-1 游戏场景中的渲染对象

下面主要介绍一些重要渲染模块的具体实现。

4.2 地形

塔防游戏的场景通常比较简单,就像一个棋盘格,可以在上面摆放防守单位,专门留给敌人一条通道。在这个实例中,我们使用二维数组来点示场放中的格子, 每个格只有两种状态,允许摆放防守单位或不允许。

在Unity3D中通过高度图来实现地形,高度图实际上是一张矩形的灰度图,在灰度模式中,颜色通过0~255来表示,0代表黑色,255代表白色,像素越亮代表地势越高,255的像素代表此次顶点最高,反之亦然,所以像素灰度值和顶点的高度可以用公式 (1) 表示。其中L为像素的灰度值,yheight、ymin分别为Unity3D中定义的地形高度和地形最低点,求得网格顶点的高度y.

y?L?yheight255?ymin

(1)

程序在需要渲染地形时通过读取这张图片,并按照灰度生成顶点高度不一的矩形网格。这样大大减少了游戏模型体积。

Unity3D中的地形模块不但可以导入高度图,还可以用笔刷为绘制地形纹理、树、草和岩石,所见即所得,大大减少了开发人员的工作量。

在新建了一个Project之后,我习惯于先创建几个文件夹,用来存放做游戏所需要的所有素材,如:Gizmos,Materials,Scene,Script等,其中Gizmos用来存放贴图,Materials用来存放材质,Scene用来存放场景,Script用来存放脚本。

9

第4章 游戏实现 保存第一个场景,放在Scene中,命名为demo,此时场景中为空,在GameObject中Create Other一个地形Terrain,如图4-2所示。

图4-2 创建地形

在旁边的组建面板就可看到如下工具,如图4-3所示。

图4-3 组建面板

通过组建面板的Terrain组建,可以用地面升降,地面模糊,地图画笔等等工具对地图进行编辑。进行一系列的修饰后,原本空白的地图上就会有塔防游戏的基本地图样式,如图4-4所示。

10

第4章 游戏实现

图4-4 地图

4.3 光照和场景元素

在创建好地图之后会发现地图灰暗,当点击运行时候,会显示地图区域为黑色,这是因为场景中没有光源,此时我在场景中按添加地形的方式添加一个平行光源,如图4-5所示。

图4-5 平行光源

同样可通过调整光源组建面板中的Intensity来调整光的强弱,可从图4-5中看出,添加光源过后明显使得地图光亮了。

接下来添加场景中的元素,例如树,终点,装饰等等,通过Assets中的Import Package选项来导入我需要的素材所有的素材我将它们放在预置Prefabs文件夹中,这样可以方便重复使用,既节约了硬件资源又大量降低了我的重复劳动,如图4-6所示。在元素等放

11

第4章 游戏实现 置完毕后,地图就做好了。

图4-6 预置元素

4.4 怪物通道

塔防游戏需要怪物沿着固定的路线前进,路线中不允许放置防御塔,路线之外可以放置,这就需要用脚本对地图进行编辑。

首先,创建脚本GridNode.cs,代码如下图4-7所示。

图4-7 脚本GridNode.cs

这个脚本把地图上的方格会设置两种属性,一种是可以放置防御塔GuardPosition另一种就是不允许放置防御塔CanNotStand。

12

第4章 游戏实现 接下来将地图设置方格,创建GridMap.cs脚本,它会生成一个范围可控的网格,将地图盖住,当BuildMap被执行时,网格将在地图上显示出来,此时,如果网格上有物体挂载了GridNode.cs脚本,并设定为CanNotStand时,物体覆盖的网格将变为红色,同时运行时不可在此区域建造防御塔。

在场景中创建空物体,并挂载GridNode.cs同时设置为CanNotStand,摆放在地图中通道上,这样就可以使通道无法建造防御塔了。如图4-8所示。

图4-8 设置方格属性

4.5 摄像机

因为游戏的场景会比较大,我们需要移动摄像机才能观察到场景的各个部分。接下来需要为摄像机添加脚本,在移动鼠标的时候可以移动摄像机。

在为摄像机创建脚本前我们需要先创建一个空游戏体作为摄像机观察的目标点,并为其创建脚本CameraPoint.cs,它只有很少的代码。如图4-9所示。

图4-9 脚本CameraPoint.cs

接下来创建脚本GameCamera.cs,并将其指定给场景中的摄像机。

13

第4章 游戏实现

图4-10 脚本GameCamera.cs

在这个脚本的Start 函数中, 我们首先获得了前面创建的CameraPoint,它将作为摄

14

第4章 游戏实现 像机目标点的参考。

在Follow 函数中,摄像机会按预设的旋转和距离始终跟随CameraPoint 目标点。 LateUpdate 函数和Update 函数的作用一样, 不同的是它始终会在执行完Update 后执行,我们在这个函数巾调用Follow 函数,确保在所有的操作完成后再移动摄像机。

Control函数的作用是移动CameraPoint目标点,因为摄像机的角度和位置始终跟随这个目标点,所以也会随着目标点的移动而移动。

4.6 游戏UI界面

接下来,需要创建一个游戏管理器,它有几个作用,包括UI显示,控制鼠标操作和显示调试信息等。

创建3个GUI Text,分别表示游戏中的敌人进攻波数,我方生命和我方的点数,如图4-11所示。

图4-11 GUI Text

创建一个空游戏体作为游戏管理器,确定它的坐标位置为0,将前面创建的文字 作为它的子物体,如图4-12所示。

图4-12 子物体

创建脚本GameManager.cs,指定给前面创建的游戏管理器,添加代码如图4-13至4-15所示。

15

第4章 游戏实现

图4-13 脚本GameManager.cs(1)

16

第4章 游戏实现 图4-14 脚本GameManager.cs(2)

17

第4章 游戏实现

图4-15 脚本GameManager.cs(3)

在这个脚本中,我们在Update函数内添加了鼠标操作更新了摄像机的移动,其他部分都用于处理UI文字的显示。文字显示部分,使用了 ...这样的标记,这可以使同一段文字产生不同的颜色变化。

现在运行游戏,按住鼠标左键移动即时改变摄像机的位置。

4.7 路点建设

但在塔防游戏中敌人通常不需要智能寻路,而是按照一条预设的路线行动。接下来我们将为敌人创建一条前进路线, 这条路线是预设的,敌人将从游戏场景的左侧沿右边道一直走到右侧。

路线是由若干个路点组成,首先为路点创建脚本PathNode.cs,如图4-16所示。

图4-16 脚本PathNode.cs

18

第4章 游戏实现 在游戏中,敌人将从一个路点到达另一个路点,即到达当前路点的子路点。在PathNode脚本中,主要是边过SetNext函数设置它的子路点。

创建一个空游戏体作为路点,指定PathNode.cs 脚本,并设置Tag为“pathnode” 沿着场景中的通道摆放路点,如图4-17所示。

图4-17 路点设置

接下来为每个路点设置于路点,为了设置方便,添加-个菜单功能,加速设置路点的操作。创建脚本PathTool.cs,它将提供一个自定义的菜单,帮助我们设置路点,代码如下图4-18所示。

图4-18 脚本PathTool.cs

19

第4章 游戏实现 这里的代码只有在编辑状态才能被执行,注意PathTool继承自ScriptableObject,并在展前面引用了UnityEditor。所有在这里使用的属性和函数均为static类型。

[MenuItem(\Parent %q\属性将在菜单中添加名为PathTool的们定义菜单,并包括子菜单Set Parent,快捷键为Ctrl+q。柴单Set Parent执行的功能即是SetParent 函数中的功能,将当前选巾的节点作为父路点。

相应的SetNextChild函数将当前选中的路点作为父路点的子路点。

选中场景中的第一个路点,按快捷键Ctrl+q将其设为父路点,然后选择下一个路 点按Ctrl+w设为子路点,再按Ctrl+q 将它设为父路点,再选择子路点,反复这个操作,直到将所有路点设置完毕。

4.8 敌人

创建敌人的脚本Enemy.cs,如图4-19所示。

图4-19 脚本Enemy.cs

20

第4章 游戏实现 在这个脚本中,定义了敌人的一些基本属性,如生命值、移动速度、类型等,它有-个路点属性作为当前的出发点。在MoveTo函数中,敌人向当前路点的子节点前进,当距离子路点较近时,即将子路点作为当前路点,再向下一个路点前进。注意这里计算敌人与子路点的距离时没有计算Y 轴,因为我们希望空中的敌人飞到路点上方时即认为是到达该路点。当敌人走到最后的路点,即是到达我方基地,销毁自身,并使基地减少一点生命值。

将放置在预置里的模型放在通道中,并制定这个脚本到模型上,完成敌人的设置。运行时会如图4-20所示。

图4-20 模型指定

4.9 敌人生成器

塔防游戏的敌人通常是成批山砚,一波接着一波,因为敌人的数量众多,所以需要一个生成器按预先设置的顺序生成不同的敌人。为了提高工作效率,需要在Excel中设置每一波出现的敌人,然后将其导出为XML格式,敌人生成器将读取这个XML 文件,按其设置生成敌人。

首先要创建一个用于定义XML格式的数据源,使用任意文本编辑器输入如下文本,并存为template.xml,如图4-21。

21

第4章 游戏实现

图4-21 XML数据源

这是一个简单的XML文件,里面没有什么内容,但定义了我们需要的格式:wave表示第几波,enemyname是敌人的名字,这个名字简要在Unity中与敌人关联,level 表示敌人的等级,wait表示生成这个敌人需要等待的时间。

然后新建一个Excel文档,在其中添加文本,名称要与XML数据源一致。如图4-22所示。

图4-22 添加文本

在XML源中依次选择table下面的wave、enemyname、level、wait并拖曳至相应的文本表格中。如图4-23所示。

图4-23 完成映射

映射完成后,可以输入相应的数据,这样就能设置很多敌人。

4.10 防守单位

本游戏中唯一的一个防守单位是个箭塔,它的功能很简单,当敌人进入它的攻击范

22

第4章 游戏实现 围便会射箭。

创建防守单位的脚本Defender.cs,如图4-24所示。

图4-24 防守单位脚本Defender.cs

在这个脚本中,FindEnemy函数主要用于查找进入其攻击范围的敌人,然后在这些敌人中再选出一个生命值最低的敌人作为目标敌人。

Attack函数向敌人攻击,这里只是很简单地调用了敌人的SetDamage函数减少敌人的生命值。

当创建了一个防守单位后,它所处的单元格则被当前防守单位占据,不能再创建其他东西,因此残们在Start函数巾改变了防守单位所处单元格的属性。

然后为导入好的模型指定Defender.cs脚本就可以了。

4.11 生命条

敌人在受到攻击的时候,找们并不知道它受到了多少伤害,为了能够提示它的剩余生命值,需要为它制作一个生命条。在素材中,我准备好了一个平面模型,并附有一张贴图,贴图由简单的黄色和红色组成,我们将使用改变平面模型UV的方式,使黄色表示剩余生命值,红色表示失去的生命,如图4-25所示。

23

第4章 游戏实现

图4-25 生命条

创建脚本LifeBar.cs,如图4-26所示。

图4-26 生命条脚本LifeBar.cs

在这个脚本中,Ini函数负责初始化,主要是获取生命条模型的UV。在UpdateLife函数中,我们根据当前生命值和最大生命值计算出一个比例,然后调周Pad函数左右移动UV的位置,当生命值越低,黄色显示的越少,红色显示的越多。SetPosition 函数负宽设置生命条的位置, 因为生命条始终要伴随相应敌人的移动, 并出现在它的上方,所以这个函数设置了一个yoffset 参数,使生命条的位置向上偏移一定距离。

将LifeBar.cs 脚本指定给LifeBar.tbx 作为脚本组件,并将它制作为prefab文件。 在敌人的Inspector窗口将生命条的prefab与其关联。

然后再在Enemy.cs脚本中添加设置生命条随敌人移动,并实时更新生命条状态。 这样运行游戏时就会有生命条的减少了,如图4-27所示。

24

第4章 游戏实现

图4-27 生命条效果

4.12 自定义按钮

在塔防游戏中,防守单位都是动态创建的,通常游戏中将提供若干个按钮,当选中其中一个按钮后,这个按钮将保持激活状态,这时在场景中选择位置按下鼠标,即可创建一个防守单位,同时也会扣除一些用于创建防守单位的资金或点数。

接下来我们将创建一个自定义的按钮,虽然使用OnGUI 创建按钮更容易,但OnGUI 的效率较低,也不利于制作布局复杂或有特殊需求的UI, 更难为它制作动画。

创建脚本GUIButton.cs,如图4-28所示。

图4-28 脚本GUIButton.cs

25

第4章 游戏实现 在这个脚木中, Awake函数初始化了按钮的状态,按钮一共有三种状态,包括正常、高亮和激活。在UpdateState 函数中,判断是否选中按钮,如果选中,则运回按钮的ID。SetState 函数用来设置按钮的状态,实际上是在更新按钮的贴图。SetScale 函数用来设置按钮的缩放,在乎机平台,因为机器设备的分辨率不统一,所以在不同平台对按钮进行相应缩放是必要的。SetOnActiv函数会将按钮设为激活状态,当按钮处于这种状态,即使鼠标从战钮上移开,按钮的状态也不会改变。

然后在场景中新建一个贴图GUI Texture,然后指定这个脚本,在Button Skin中设置按钮的三种状态的贴图,然后将按钮Position设为0,将PixelInset的X和Y设为5,按钮就会出现在屏幕左下角的位置,如图4-29所示。

图4-29 建塔按钮

运行游戏,按一下屏幕上的按钮,然后在地面上点一下,即可创建一个防守单位。 这样,一个怪物进入防守单位攻击范围时,就会收到攻击,随即减少生命值,一款塔防游戏就做好了。

26

第5章 游戏测试

第5章 游戏测试

5.1 在Unity3D中运行测试

点击软件中的运行按钮,如图5-1所示。

图5-1 测试按钮

游戏在软件中测试运行,如图5-2所示。

图5-2 软件中测试

游戏能够正常运行,没有报错,测试成功。

5.2 PC端测试

点击File选择Build Settings出现打包菜单,如图5-3所示。

27

第5章 游戏测试

图5-3 打包选项

结合游戏之前准备的另外两个开始场景,就可以打包成一个完整的游戏了,先将其打包为PC游戏进行测试。

运行结果如图5-4所示。

图5-4 开始场景

28

第5章 游戏测试 开始画面,仅有一个进入键,点击中间人物形状的按钮,进入下一个场景,如图5-5所示。

图5-5 选择关卡场景

第二场景中有4关选择,任意点击一关都会进入第三场景,如图5-6所示。

图5-6 游戏场景

游戏完美运行,PC端的测试成功。

29

第5章 游戏测试 5.3 Android平台测试

如PC端封装类似,点击file选项中的Build Settings,出现如图5-7窗口。

图5-7 平台选择

在选择了Android后,点击左下角的Switch Platform将当前开发平台转换成Android开发平台,然后点击Player Settings进行设置,如图5-8所示。

图5-8 设置名称

设置了名称和打包后的图标后,还需要进行其它设置。在Resolution and Presentation中Default Orientation选项设置游戏在Android客户端中按横屏还是竖屏显示,由于本设计为横屏游戏,为了消除竖屏可能带来的问题,所以选择Landscape横屏显示。

30

第5章 游戏测试 在Other Settings中需要选择Android的系统版本,详细设置如图5-9。

图5-9 其它设置

设置完成后,点击Build,经过短时间的处理后,一个安卓Apk就打包完成。将其安装在Android测试机上,本测试机型号为:原道? N70双擎HD。安装后如图5-10所示。

图5-10 安装在测试机

31

第5章 游戏测试 打开游戏,出现游戏开始界面如图5-11。

图5-11 游戏开始

选择关卡如图5-12所示。

图5-12 选择关卡

选择第一关,进入游戏,画面如图5-13所示。

图5-13 游戏画面

32

第5章 游戏测试 5.4 测试结果

在Unity3D的Mono模拟器中运行结果,游戏可以正常流畅运行,界面简洁易懂,操作简单,且画面鲜艳。

在PC平台测试运行,游戏同样可以正常运行。

在Android平台上测试运行时,游戏出现较严重的卡顿、延迟现象,虽然游戏能够正常运行,但是体验较差。

33

总 结

总 结

一个基于Android塔防游戏的完成,也标志着毕业设计的工作到达尾声。在整个的设计制作过程中,我收获了许多,同时发现了一些问题,最后我将对今后的工作有更多的展望。

在设计开始之前,本人大致了解了简单的游戏项目开发,但是由于没有系统地学习脚本编写,所以在动手制作游戏过程中,经常卡在脚本的编写上。例如前面设计中的路点设置的脚本就成为开发中很大的一个难题。在查阅资料和视频之后,成功将一些问题解决,但是薄弱点依然存在。同学和老师在游戏的开发中给予了本人很大的帮助,推荐了一些有用的资料和教程,让游戏制作成功。

游戏虽然制作成功,但是存在着以下问题: 1. 界面不美观;

2. 游戏在Android平台测试中出现较严重的卡顿和延迟现象,说明游戏优化不足; 3. 关卡较为简单,模型和素材搭配不合理; 4. 功能上较为简单,可玩性不高。

Unity3D是一款非常强大的游戏开发软件,它有着强大的跨平台能力,在本设计的最后测试阶段中可以看出,同样一款游戏,仅仅因为封装类型不同,在PC平台和在Android平台可以无差别运行。这样一来,免去了游戏在不同平台之间移植的复杂工作,同时节约了开发成本。可以预料,在接下来的一段时间,Unity3D将成为游戏开发行业的热门工具。也就是说,学会运用这门工具,才能更好地在游戏开发行业发展。

在今后的工作中,本人将继续学习,此毕业设计的开发过程中遇到的一些问题和游戏本身存在的一些问题将是本人今后一段时间努力学习和工作的方向,同时,还将用心学好Unity3D这个工具。

34

本文来源:https://www.bwwdw.com/article/ol17.html

Top