admin管理员组

文章数量:1531374

2024年6月28日发(作者:)

摘 要

Unity3D是由Unity Technologies开发,可以让玩家轻松创建诸如三维视频游

戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,

是一个全面整合的专业游戏引擎。Unity的编辑器运行在Windows 和Mac OS X

下,可发布游戏至Windows、Mac、iPhone和Android平台也可以利用Unity web

player插件发布网页游戏,支持Mac 和Windows的网页浏览。它的网页播放器

也被Mac widgets所支持。

本课题是基于Unity3D的飞机大战游戏开发,利用Unity3D系统和C#语言

开发,实现了简单的飞机大战游戏。主要的功能模块如下:提供背景的循环播放

模块,提供敌机的孵化器类模块,提供玩家战机的类模块,主界面模块,游戏奖

励类模块,包括超级子弹和导弹,游戏控制模块,包括检测子弹与敌机碰撞,检

测敌机与玩家战机碰撞木块,游戏的暂停、播放功能,其中玩家战机还添加了一

个血条,玩家战机可以被敌机打中四次才死亡,可以让新手更好的试玩游戏,除

此以外还为用户提供更加人性化的设计和方便人员的操作流程。

游戏还有很多需要完善和扩充的地方,比如可以做不同的模式,多关卡模式

或挑战模式。也可以做成多人模式和小伙伴一起玩,游戏的界面也可以补充的更

加完善,包括音乐、设置、帮助和商店等模块。后期还需要更加努力去完善修改

自己的游戏

关键词:游戏开发; 飞机大战; 移动端; 单机; 碰撞检测; 脚本语言

ABSTRACT

Unity3D developed by Unity Technologies, allows gamers to easily create such

comprehensive three-dimensional video game development tools, games, architectural

visualization, real-time three-dimensional animation and other types of multi-platform

interactive content, is a fully integrated professional game engine. Unity Editor runs under

Windows and Mac OS X, you can publish your game to Windows, Mac, iPhone and

Android platform can also use the Unity web player plugin released web games, support

for Mac and Windows web browser. Its Web Player Mac widgets are also supported.

This paper is based on Unity3D aircraft war game development, utilization Unity3D

system and C # language, to achieve a simple airplane war game. The main function

modules are as follows: to provide background loop module which provides the aircraft

incubator class module offers players fighter class module, the main interface module, the

game rewards class modules, including super bullets and missiles, the game control

module, comprising detecting bullet collision with the enemy, and the player to detect

enemy aircraft collision block, pause the game, the player, in which the player warplanes

also added a health bar, the player can be enemy aircraft hit four times before death,

allowing novices better demo games, in addition also provides users with the operation

process more convenient and user-friendly design staff.

Games have a lot to improve and expand the place, for example, can do different

mode, multi-level mode or challenge mode. Multiplayer mode and can also be made small

partner to play with, the game's interface can also add more sophisticated, including music,

Settings, Help, and shops and other modules. Late also need to work harder to revise and

improve their game.

Keywords:

Game Development; Aircraft War; Mobile Terminal; Single; Collision

Detection; Scripting Language

目 录

1 绪论

............................................................ 1

1.1 课题的背景与意义

............................................. 1

1.2 国内外的发展状态

............................................. 2

2 系统需求分析

.................................................. 4

2.1 功能需求

...................................................... 4

2.2 性能需求

...................................................... 5

2.3 友好的用户界面

............................................... 5

3

系统设计

........................................................ 6

3.1 概要设计

...................................................... 6

3.1.1 设计方案

.................................................... 6

3.1.2 系统流程

.................................................... 8

3.2 模块详细设计

................................................. 9

3.2.1 开始游戏

................................................... 11

3.2.2 暂停游戏

................................................... 19

3.2.3 重新开始

................................................... 20

4 游戏界面实现和测试

.......................................... 21

4.1 游戏界面的实现

.............................................. 21

4.2 游戏的测试

................................................... 24

4.2.1 测试方法

................................................... 24

4.2.2 设计测试用例

............................................... 24

4.3 游戏测试总结

................................................ 27

5 总结

........................................................... 28

参考文献

......................................................... 29

致 谢

........................................................... 30

2016届毕业论文设计

1 绪论

1.1 课题的背景与意义

随着技术的发展和进步,智能手机的性能越来越强大,其市场占有率也在持

续快速增长。到目前为止人类已经迈入了智能手机的时代。

智能手机给人们的生活带来的改变是全方位的,过去人们对手机的需求大体

上只是打电话和发短信等基本通信功能。现在情况则完全不同,相比于传统手机,

智能手机更像是一台手持的小型电脑。除了基本的通讯功能,它还能供用户进行

网络访问、社交、阅读、观看电视电影和玩游戏等过去在家用电脑上完成的活动。

智能手机市场的急剧扩张带来的不仅仅是手机出货量的增长,同时还促进了

手机应用软件市场的繁荣。各种类型的APP层出不穷,到2015年初苹果系统的应

用数量为121万款片

[1]

。而占据移动市场大半份额的安卓系统,其应用商店Google

Play中的应用总量也早已超过了143万。考虑下载量,则数据更加客观。苹果应

用商店截止2015年1月的应用总下载量超过750亿,每周访问量达到了3亿次。而

同一时期谷歌则声称搭载其安卓系统的手机出货量达9亿,安卓应用的总下载量

也与苹果基本持平。目前,全世界每秒钟都有成千上万的应用被下载,同时每天

仍有数千款iOS和Android新应用源源不断地进入相应的应用市场

[2]

手机应用种类繁多,其功能和特点也各不相同。常见的应用种类包括游戏、

新闻、杂志书籍、视频娱乐等,这其中占比例最大的是手机游戏。据国外网站2013

年1月统计的苹果AppStore应用分布数据显示,在线的iOS应用数量为552,247,

其中超过17%的应用是手机游戏,数量达95,324。国内的移动应用下载统计数据

也显示,在2013年第三季度所有的应用下载种类中,35.6%的下载量是游戏贡献

的,这个比例是排名第二位的社交应用的两倍多。2015年全球游戏市场总收入达

到854亿美元,移动端、PC端、Mac端、主机端以及掌机的收入分别为348亿、290

亿、185亿和30亿美元。手游的全球总收入比端游多出20%,是全球市场份额最

大、游戏体验总时间最长、收入最高的游戏平台——更重要的是,这个领先优势

还在不断扩大。移动分析机构App Annie最新研究报告预计,2016年全球应用商

店总收入将增长24%达到510亿美元,而到2020年全球应用商店营收将超过1010

亿美元。App Annie预计到2020年移动游戏营收将达到746亿美元。到今年上半年

就来自应用商店的总收入而言,中国将超过美国。而就下载量而言,中国在2015

1

2016届毕业论文设计

年年初就已经过美国。我国手机游戏市场依然会保持高速增长和持续繁荣。

Unity3D游戏引擎占有目前游戏引擎市场最大的份额,很多国外开发团队利

用Unity3D引擎制作出精良的游戏。Unity3D引擎作为一个发展迅速的游戏引擎,

很适合中小团队

[3]

。因此,在国外团队利用Unity3D取得很好成绩的同时,国内

也加快了Unity3D的学习和发展,目前Unity3D在游戏领域内发展迅猛

[4]

,需要大

量的专业人才。

飞机大战是一款休闲类游戏。游戏采用商业游戏引擎Unity3D实现快速开发,

以节省开发时间,提高开发效率。该游戏基于传统的PC端动作休闲游戏,结合

智能手机上优秀的触控和显示,同时加入了血条,给玩家主机增加了新的生命值,

大大提高了游戏的趣味性,很适合新手玩游戏,能吸引很多小朋友和女性用户下

载试玩。

1.2 国内外的发展状态

当前全球手机游戏行业的领导者依然是美国,这一点和传统游戏市场的格局

是一致的。另外从市场产值来看,日本和韩国也扮演了重要的角色

[5]

。这几个国

家的手游行业不论从技术还是美术方面都处于领先地位。由于用户基数大、市场

潜力不可估量,我国手机游戏产业在经历了十几年的发展后也在快速地走向成熟。

本文仅从手机游戏涉及的几项关键技术对当前业界的研究情况进行概述:

(1)游戏动画效果

视觉感官效果,直接决定游戏的可玩性,游戏的一切内容最终都要通过视觉

展示传达给玩家。逼真的动画效果、流畅的角色动作对于手机游戏的质量至关重

要。传统的PC端和家用机游戏动画技术比较成熟,而手机游戏受硬件条件制约,

动画技术还有很大的提升空间。2D手机游戏采用的较多的仍然是精灵动画技术,

即逐帧播放动画序列图;3D手游在精灵动画的基础上,还发展出来了刚体分层

动画和骨骼动画等技术

[6]

(2)物理碰撞检测

碰撞检测决定了游戏中各种元素的即时交互响应,具体实现中不能单纯为了

满足碰撞形体的逼真而一味使用复杂的碰撞体模拟。对于手机游戏来讲,性能上

的考虑尤为重要。一旦游戏元素增多,实时检测碰撞事件就会带来巨大的计算消

耗。2D手机游戏中物体基本上可以视作面片,检测起来相对容易一些,最常用

2

2016届毕业论文设计

的碰撞近似处理包括矩形近似和圆形近似两种。某些特定情况下还可以使用像素

值来进行碰撞分析

[7]

。但是3D游戏中,情况就复杂的多。目前业内还没有十分理

想的3D碰撞检测方案。

(3)游戏引擎技术

当前手机游戏市场竞争十分激烈,为了加快游戏开发速度,提高开发效率并

且避免重复进行一些基础功能模块的开发,使用一款合适的引擎是非常重要的

[8]

游戏引擎提供了特定类型的游戏开发所需的通用架构,以及游戏中的各种资源、

场景和数据管理机制,集成常用的物理、动画、音效、粒子特效和脚本等功能

[9]

目前考虑到游戏平台的多样化,跨平台开发的功能对游戏引擎也越来越重要。

有关本文的游戏开发引擎Unity3D主要做以下介绍:

Unity3D是一款商业引擎,发行公司是美国的Unity Technologies。Unity3D最

初是由一批游戏引擎技术爱好者创立的实验性项目,一开始只针对苹果的Mac

平台。后来随着项目的发展和完善,Unity3D支持的平台越来越多,包括Mac、

Windows、Linux、iOS、Android 等几乎市场上常见的全部游戏平台。

除了跨平台之外,Unity3D最大的优势就是其可视化的编辑环境。“所见即

所得”在Unity3D上得到了最大程度的体现。在其编辑器中,几乎一切游戏元素

都可以被视为“物体”或者是资源。这些资源包括游戏中的贴图、材质、声音、

场景、角色、动画等

[10]

。除了静态的资源管理,Unity3D还支持Prefab特性,可

以将游戏角色甚至整个场景制作成类似于模板的物体,然后在游戏运行代码中动

态生成该物体。这就十分利于游戏的快速开发,使游戏创作的过程更加简便。开

发者可以将精力更多的集中到游戏规则本身,而不是繁杂的底层资源管理。

Unity3D还是一款综合型的游戏引擎。使用它开发的游戏并不会被局限在某

些特定类型,比如第三人称射击、即时战略、角色扮演等。除了游戏开发之外,

Unity3D还为虚拟显示技术提供了强大的支持。引擎本身的功能十分齐全,实时

渲染、动画组件、物理引擎、粒子效果、网络功能、脚本编辑和运行等功能均有

十分完善的支持。基础的Unity3D版本是免费的,免费版支持绝大部分引擎功能,

对于某些高级特性如缓存服务器等

[11]

,用户则需要购买Unity3D的Pro版本,费用

是1500美金。这个价格远低于Unreal等传统的商业引擎动辄数十万美金的授权费

用,所以对于小团队和独立开发者是相当大的利好。

3

2016届毕业论文设计

另外值得一提的是,Unity公司还为引擎的使用者提供了一个网上商城

AssetsStore。该商城的商品种类繁多,包括游戏开发中所需的网格模型、2D或者

3D纹理、材质、游戏音频、UI贴图,以及各种方便开发的引擎插件如UI插件、

网络插件、资源管理插件等等,部分资源还是免费的。开发者既可以在商城购买

这些游戏资源,又可以在商城上传并出售自己开发的相关资源商品。初学者还可

以在商城购买到一些项目工程资源或者游戏原型,这对于提高开发水平有很大的

帮助。合理利用商城里的资源,可以有效减少项目的工作量,节省游戏开发的时

间。对于人力资源比较有限的团队,Assets Store是非常值得关注的地方。

2 系统需求分析

2.1 功能需求

“飞机大战”是一款基于Unity3D引擎和C#脚本开发的休闲游戏

[12]

,可以

发布PC端,也可以发布到移动端Android或iOS,在手机上玩,简单方便。游

戏舍弃了关卡的概念,加入了游戏排名,是玩家可以不断挑战自己,增强了游戏

的可玩性。游戏的主要功能如下:

(1)游戏界面

玩家对一款游戏的第一印象,就是游戏的画面感觉。游戏界面的优劣直接决

定手机游戏的成功与否。游戏运行中,屏幕上的一切元素都可以归结为界面。界

面最主要由三点组成:UI、角色形象和游戏背景。“飞机大战”作为一款针对年

轻人的游戏,要求游戏界面的整体风格动感明快,此外,游戏的界面要能适应屏

幕尺寸的变化,以及适应各种不同类型手机的屏幕。

(2)操作方式

传统的PC端游戏和家用机游戏主要依赖于键盘、鼠标和游戏手柄进行操作,

而智能手机缺少这类辅助硬件,只能通过尺寸有限的触摸屏来完成所有操作。作

为休闲类游戏,要求操作方式的复杂度尽量小,用最简单的操作就能操作游戏,

而且要尽量符合常规的操作方式

[13]

。“飞机大战”的操作简单明了,点击屏幕

中的玩家战机就可以完成全部的操作。

(3)物理规则

对于一款动作类游戏,如何设定整体的物理规则十分关键。该类型游戏中,

4

2016届毕业论文设计

游戏角色大部分时候都会在玩家的控制下进行各种形式的运动,如跳跃、奔跑等。

同时还会与游戏中的“敌人”或其他中立物体发生碰撞。为了使这些运动和碰撞

更加符合玩家的直观感觉,就要求游戏能够尽量地模拟现实中的物理规律

[14]

比如跳跃时的加速度,碰撞后的反弹等。当然,某些时候为了增强游戏的可玩性,

也不用完全死板的照搬真实世界的规则。这就需要设计者合理的权衡利弊,做出

取舍。碰撞检测一直是游戏开发中需要着重考虑的技术要点,不同类型和规模的

游戏对碰撞算法的要求也不同

[15]

。“飞机大战”本身是一款2D轻量级游戏,元

素的形状比较规整,所以对碰撞检测的最核心要求是响应准确、性能消耗低。

2.2 性能需求

游戏的时间特性:

在软件方面,要求响应时间和更新处理时间都比较快,且时间设定都合理,

软件都能及时触发相应的操作。

操作的灵活性:

在游戏的时间特性上,要求响应时间和更新处理时间都比较快,且时间设定

都要合理,软件都能及时触发相应的操作。

游戏的娱乐性:

游戏要求娱乐性较高,玩家可以运用道具等来增加游戏娱乐性,同时有背景

音乐,同时还能触发震动效果,使得游戏的运行效果更加震撼。

2.3 友好的用户界面

本游戏是直接面对用户的,要求游戏能够提供良好的用户接口,易用的人机

交互界面。要实现这一点,就要求软件应该尽量使用用户熟悉的术语和提示消息。

针对用户可能出现的使用问题,要提供足够的提醒帮助功能,缩短用户对软件熟

悉的过程。一个好的功能强大系统,必须要进行完善而且全面的系统分析和友好

设计。本项目中,之所以能够有计划地进行下去,的确也是缘于良好的系统分析,

如若省略这一步直接编程,那难度必然加大,以至于在编程过程中又不得不回过

头来进行系统分析,此时必然拖慢进度,打乱整个系统逻辑,其最终的成品也充

满变数。本系统在性能功能上应达到如下需求:

(1) 操作简单、界面友好: 完全控件式的页面布局。

(2) 游戏的安全性,正在游戏中对可能发生的突发事件做出处理。

5

2016届毕业论文设计

(3) 软件的响应速度要快,保证用户不会应为等待反馈时间过长而放弃本软件。

(4) 软件的可靠性,能够真正的带给游戏者乐趣。

(5) 在结构上应具有很好的可扩展性,便于将来的功能扩展和维护。

根据以上功能,该系统主要以Unity3D为操作平台,它提供了很大的自由空

间,采用C#为开发语言,使系统开发更加方便快捷,本软件的目标即为成功、

完整的体现该系统,让客户满意。

3 系统设计

3.1 概要设计

系统的概要设计主要是针对系统的总体功能如何设计,如何划分模块,系统

的数据库如何设计进行研究。它为系统的详细设计做铺垫。在系统的设计过程中

起着非常重要的作用

[16]

。系统设计是信息开发过程中的另一个重要阶段,在这

一阶段中将根据前一阶段逻辑分析的结果,在系统分析报告的基础上,按照逻辑

模型的要求,科学合理地进行新系统的设计。系统设计包含两个方面:首先是总

体结构设计,其次是具体物理模型的设计。这个阶段的主要目标是将反映用户信

息需求的系统逻辑方案转换成可以实施的基于计算机的物理方案,并为下一阶段

的系统实施提供必要的技术资料。

本系统采用结构化设计的方法来实现系统总体功能,提高系统的各项指标,

即将整个系统合理的划分成各个功能模块,正确地处理模块之间和模块内部的联

系以及它们之间的调用关系和数据联系,定义各模块的内部结构,通过对模块的

设计和模块之间关系的系统来实现整个系统的功能

[17]

3.1.1 设计方案

“飞机大战”游戏整体设计思路,首先开始游戏,玩家通过鼠标控制战机移

动,可以躲避敌机或发射子弹销毁敌机,销毁敌机可以得到相应分数,玩家战机

血条生命值为100,被敌机击中会减少生命值。玩家战机可以吃奖励,得到奖励

可以发射超级子弹和导弹。游戏可以暂停和继续,当玩家战机的生命值为0时,

战机死亡,死亡后弹出结束界面显示玩家所得分数和重新开始游戏。游戏可以划

分成几个部分,开始游戏部分,敌机的控制,玩家战机控制,奖励部分,游戏得

6

2016届毕业论文设计

分部分,游戏结束重新开始部分。

敌机的控制部分是定义一个孵化器一直生成敌机,敌机分为3种类型,小型

飞机、中型飞机和大型飞机,小型飞机的生命值是1,即需要一发子弹就可以销

毁;中型飞机的生命值是5,需要5发普通子弹销毁;大型飞机的生命值是15,需

要15发普通子弹才能销毁,设置的普通子弹一次碰撞可以减少1个生命值。设置

的三种敌机的生成速率分别为0.5S、5S和8S,销毁三种敌机所获得的分数分别为

100分、500分和1500分。

玩家战机控制部分,首先通过鼠标控制战机的上下左右移动,但战机只能在

屏幕的背景框里移动,不能超出界面。战机可以发射普通子弹和超级子弹两种武

器,普通子弹是从战机的头上发射的,超级子弹是从机翼两侧发射的,当玩家吃

到超级子弹奖励后就可以发射超级子弹。战机的初始生命值是100,被敌机击中

一次就减少1/4的生命值,所以被击中四次就会死亡。

奖励部分分为两种,一种是超级子弹,另一种是导弹。当战机吃到超级子弹

奖励时子弹会从单发变成双发,并从机翼的两侧发出,但超级子弹有时间限制,

吃一次超级子弹奖励的时间为10S,10S后子弹自动变成普通子弹。当战机吃到

导弹奖励后,屏幕左下角会出现一个导弹的图标和导弹的数量,单击空格键就可

以使用导弹,导弹可以炸掉整个屏幕内的所有敌机,导弹使用后数量减少1,当

小于1时屏幕上导弹图标消失。

游戏得分部分分为历史最高和最终得分,游戏得分是按消灭敌机多少记录的,

消灭一个小型飞机的分数是100分,中型飞机的分数是500分,大型飞机的分数是

1500分。游戏开始后在屏幕的左上方显示“Score:”加分数,当战机死亡时左上

角显示游戏分数,屏幕中间显示历史最高分和最终得分,最终得分就是本次游戏

的得分。

游戏的整体设计类图如图3-1所示,Hero类是玩家战机类,Spawn是孵化器类,

孵化器类通过代码生成3种敌机和2种奖励,奖励类是Award,敌机类是Enemy,

当敌机被击落的时候播放爆炸动画,调用的是爆炸控制类即BombManager类。当

玩家战机死亡进入游戏结束界面,调用GameOver类,游戏结束时显示重新开始

游戏和退出游戏,分别为Restart类和Quit类。

7

2016届毕业论文设计

图3-1 系统类图

3.1.2 系统流程

系统主要流程是开始游戏,初始化玩家战机,定义的孵化器生成敌机,玩家

战机发射子弹击毁敌机,玩家得分;玩家战机成功躲避敌机,敌机移动至屏幕外

后自动销毁(Destroy)掉;当玩家战机被敌机击中血条减少1/4,当玩家被击中

四次时玩家战机死亡,游戏结束。游戏结束界面显示玩家的最终得分和历史最高

分以及重新开始和退出游戏按钮,点击重新开始按钮可以重新玩游戏,点击退出

游戏按钮,将退出游戏。系统流程图如图3-2所示。

8

2016届毕业论文设计

开始游戏

初始化战机

孵化器生成敌机

战机和敌机的碰撞

检测

血条减少

子弹与敌机碰撞

检测

敌机死亡

碰撞>=4,血条为0

战机死亡

增加分数

结束游戏

图3-2 系统流程图

重新开始

3.2 模块详细设计

模块详细设计是介绍整个游戏的具体设计和思路,详细设计里面先整体的介

绍游戏的类,然后分三个模块开始游戏、暂停游戏和重新开始,具体介绍每个模

块主要的组成和每个模块的类

[18]

,以及游戏的部分实现过程。表3-1介绍了游戏

的类和类的主要说明。

9

2016届毕业论文设计

表3-1 游戏类表

类名称

类的说明

奖励类,定义两种奖励超级子弹和炸弹。

背景图片循环播放类,定义图片播放速度,实现两张背景图

片的轮播。

爆炸控制类,定义炸弹、炸弹数量,实现添加炸弹方法和使

用炸弹方法,使得炸弹数目大于0时按下空格键实现炸弹爆

炸,击毁屏幕上的所有敌机。

子弹类,定义子弹移动速度,实现子弹和敌机的碰撞检测方

法,当子弹超出屏幕边界值是自动销毁。

敌机类,定义敌机的血量、移动速度、分数和打击时间,实

现子弹击中方法和死亡方法。当炸弹数大于0时按下空格键炸

掉所有敌机,敌机超过屏幕边界后自动销毁。

定义游戏运行和暂停两种状态、分数,实现改变游戏状态方

法,暂停游戏方法,继续游戏方法。

定义当前得分和最高分数,实现show()方法,显示最高分和

当前得分。

实现暂停游戏方法,添加暂停按钮声音。

定义枪子弹速度、子弹对象,实例化子弹,实现开火方法和

停火方法。

玩家战机类,定义战机的三个子弹头,超级子弹的时间,鼠

标按下状态,血条,实现了飞机动画播放,鼠标按下事件,

获得超级子弹奖励后超级子弹实现及两种子弹状态的相互转

换,战机被敌机击中后血条减少生命值的方法,战机移动空

间对边界值的控制,实现战机与奖励的碰撞检测,子弹与敌

机的碰撞检测,敌机与战机的碰撞检测及战机死亡方法。

实现退出游戏方法。

实现游戏重新开始方法。

10

2016届毕业论文设计

孵化器生成类,生成敌机和奖励,定义三种敌机和两种奖励,

创建并调用生成敌机和奖励方法。

3.2.1 开始游戏

开始游戏模块主要有游戏背景的循环播放,玩家战机的移动控制,子弹发

射击毁敌机,敌机生成以及与子弹和玩家战机的碰撞检测等。

首先分析游戏背景的循环播放,创建好工程将背景图片拖入到场景中,要

实现背景的循环播放,这里将背景图片Ctrl+D复制一下,将两张图片无缝衔接,

第一张背景图的position重置为0,第二张的position设置y的值为图片的高度,第

一张图片的中心位置为坐标值,因此第二张的坐标y为2*(1/2)*图片的高度(图

片高度为8.52)。设置好图片后给背景图添加脚本,先定义一个moveSpeed图片移

动速度,然后计算出图片向下移动的位置,当图片移动超出-8.52时,将图片的位

置重新设置为new Vector3(position.x,position.y+8.52f*2,

position.z),8.52f*2是指两张图片的高度,这样就可以实现两张图片的轮播,效

果是背景图片一直循环播放。效果如图3-3所示。是背景

图片轮播的类.

图3-3 背景图片循环播放

敌机运行部分,先在场景中添hero1的图片,设置hero的Sprite Render属性的

Sorting Layer, Sorting Layer是指渲染排序的层,因为游戏有很多的元素,不能让

11

2016届毕业论文设计

后面的元素有遮挡,因此先设置好层级关系,选择Add Sorting Layer,添加4个层

级:Background、Character、UI、Foreground,分别代表着背景层、角色层、UI

层(放暂停按钮、炸弹个数等)、前置背景层,层级数越大越显示在上面,这里

将hero设置为角色层,如图3-4所示。

接着给hero添加脚本实现战机的功能,定义精灵数组实现战机的动画

播放,取得当前播放动画播放帧数% 2得到0和1的值传给精灵数组,然后在hero

属性中将hero1和hero2精灵赋给Sprites,效果如图3-5所示,这样运行游戏就实现

了飞机的动画播放。

图3-4 渲染排序层级 图3-5 hero精灵数组

实现飞机动画播放后给飞机添加子弹,声明子弹并放置在飞机的头和机翼两

侧,声明血条添加血条的控制方法,实现鼠标的按下、弹起事件,使飞机进行移

动,给飞机添加Rigidbody刚体,Box Collider碰撞检测,给飞机添加Audio Source

组件,让飞机发出声音,添加组件如图3-5所示。游戏初始化载入玩家战机,显

示战机的血条,效果图如图3-6所示。

以是开始游戏模块主要的类设计。

(1)Hero类设计

Hero类的主要属性和方法如图3-7 hero类图所示,hero类的属性如表3-2所示。

12

2016届毕业论文设计

表3-2 hero类属性表

可见性

可见

可见

可见

可见

可见

可见

可见

可见

可见

可见

可见

属性名称

animation

sprites

isMouseDown

gunCount

health

gunTop

gunLeft

gunRight

superGunTime

HP_A

HP_B

类型

Boolean

Sprite[]

Boolean

Int

Int

Gun

Gun

Gun

Float

Texture

Texture

属性

public

Public

Public

Private

Private

Public

Public

Public

Private

Public

Public

说明

是否进行动画播放

精灵数组,实现战机动画播放

鼠标是否按下

枪的数量

生命值

战机头上的枪

战机左翼的枪

战机右翼的枪

超级子弹时间

血条背景A

血条背景B

本类中的方法说明:

1)Start()函数,调用openFire()方法,实现战机开火。

2)Update()函数,实现战机动画播放,timer/(1f/frameCountPersconds)

计算当前战机获取的帧数,用帧数% 2得到0,1值传递给sprites[]数组,这样就实

现动画播放。实现鼠标按下和弹起事件,

当游戏处于运行状态按下鼠标左键

检查战机位置,超级子弹与普通子弹的状态相互转换。

3)OnGUI()函数,血条的绘制方法。

4)transformToSuperGun()函数,普通子弹转换成超级子弹方法。

5)transformToNormalGun()函数,超级子弹转换成普通子弹方法。

6)checkPosition()函数,战机位置的检测方法。

7)OnTriggerEnter2D()函数,碰撞检测函数,=="Award"

战机与奖励的碰撞检测,当奖励类型为0时战机发射超级子弹,当奖励类型为1

时BombManager._mb (),调用添加炸弹的方法。 ==

"Enemy",战机与敌机的碰撞检测,当health的值大于0时,发送消息“被击中”

13

2016届毕业论文设计

health--;当health的值等于0时,调用GameOver类的Show()方法,战机死亡,显

示得分。

图3-6 hero添加组件 图3-7 hero类图

(2)Gun类设计

Gun类的主要属性和方法如图3-8 Gun类图所示,Gun类的属性如表3-3所示。

表3-3 Gun类的属性表

可见性

可见

可见

属性名称

Rate

Bullet

类型

Float

GamObject

属性

Public

Public

说明

发射子弹的速度

声明子弹对象

本类中的方法说明:

1)fire()函数,实例化子弹方法。

2)openFire()函数,子弹开火方法。

3)stopFire()函数,子弹不开火方法。

14

2016届毕业论文设计

图3-8 Gun类图 图3-9 Bullet类图

(3)Bullet类设计

Bullet类的主要属性和方法如图3-9 Bullet类图所示,Bullet类的属性如表3-4

所示。

表3-4 Bullet类的属性表

可见性

可见

属性名称

Speed

类型

Float

属性

Public

说明

发射子弹的速度

本类中的方法说明:

1)Start ()函数,start方法。

2)Update ()函数,Update方法,on.y > 4.3f当子弹超

出边界值4.3时,销毁方法。

3)OnTriggerExit2D()函数,子弹与敌机的碰撞检测方法,当 ==

"Enemy"时,如果敌机的生命值大于0调用Enemy中的Behit()方法,hp-=1;如果

生命值小于等于0,销毁敌机。

(4)Enemy类的设计

Enemy类的主要属性和方法如图3-10 Enemy类图所示,Enemy类的属性如表

3-5所示。

表3-5 Enemy类的属性表

可见性

可见

可见

属性名称

hp

speed

类型

Int

Float

15

属性

Public

Public

说明

血量,生命值

敌机的移动速度

2016届毕业论文设计

可见

可见

可见

可见

可见

可见

score

isDeath

explosionSprite

explosionAnimationFrame

hitTimer

resetHitTime

Int

Boolean

Sprite

Int

Float

Float

Public

Public

Public

Public

Public

Public

敌机的分数

是否死亡状态

爆炸的精灵数组

爆炸动画每秒播放帧数

击中时间

重置击中时间

本类中的方法说明:

1) Start()函数,Start方法。

2) Update()函数,Update方法,敌机向下飞行超过边界值后自动调用

Destroy(ject)方法,销毁敌机。当前帧数小于总的爆炸动画帧数时,

实现敌机的爆炸动画。当炸弹数量大于0且按下空格键时,调用toDie()方法实现

敌机爆炸。

3)BeHit()函数,击中方法,当敌机被击中后hp-=1,敌机血条减少,当hp

小于0时,调用toDie()方法,否则hitTimer=resetHitTime,重置hitTimer。

4)toDie()函数,死亡方法,敌机死亡,计算该敌机的分数。

图3-10 Enemy类图 图3-11 Spawn类图

(5)Spawn类图的设计

16

2016届毕业论文设计

Spawn类的主要属性和方法如图3-11 spawn类图所示,Spawn类的属性如表

3-6所示。

表3-6 Spawn类的属性表

可见性

可见

可见

可见

可见

可见

可见

可见

属性名称

enemy0Prefab

Enemy1Prefab

Enemy2Prefab

award0TypePrefab

Award1TypePrefab

enemyRate

awardTypeRate

类型

GameObject

GameObject

GameObject

GameObject

GameObject

Float

Float

属性

Public

Public

Public

Public

Public

Public

Public

说明

声明敌机0对象

声明敌机1对象

声明敌机2对象

声明奖励0对象

声明奖励1对象

敌机生成的速率

奖励生成的速率

本类中的方法说明:

1)Start ()函数,调用生成敌机的方法InvokeRepeating("createEnemy0",

1,enemy0Rate),1S后开始生成敌机,每enemy0Rate秒生成一个。

2)Update ()函数,Update方法。

3)createEnemy0()函数,创建敌机0的方法,float x =

(-2.15f,2.15f),设置敌机X坐标为-2.15到2.15之间的一个随机数,GameObject.

Instantiate (enemy0Prefab,new Vector3(x,on.y,0),ty)

实例化Enemy对象。

Object

.Instantiate:克隆原始物体并返回克隆物体。

4)createEnemy1()函数,创建敌机1的方法。

5)createEnemy2()函数,创建敌机2的方法。

6)createAwardType0()函数,创建超级子弹奖励方法, ()播放

超级子弹声音,float x = (-2.1f,2.1f) 设置奖励X坐标为一个随机数,

tiate (award0TypePrefab,new Vector3(x,on.y,0),

ty) 实例化Award对象。

7)createAwardType1()函数,创建炸弹奖励的方法。

(6)BombManager类的设计

17

2016届毕业论文设计

BombManager类的主要属性和方法如图3-12 BombManager类图所示,

BombManager类的属性如表3-7所示。

表3-7 BombManager类的属性表

可见性

可见

可见

可见

属性名称

Bomb

BombNumber

Count

类型

GameObject

GUIText

Int

属性

Public

Public

Public

说明

声明爆炸对象

爆炸数目

炸弹计数器

本类中的方法说明:

1)Update()函数,Update方法,Down () &&

BombManager._ > 0判断炸弹空格键按下并且炸弹数大于0,调

用UseABomb()方法。

2)AddABomb()函数,添加炸弹方法,ive (true)和bombNumber.

ive (true)是将bomb和bombNumber状态置为true,count++,

= "X " + count,炸弹数目加1,并显示炸弹数目。

3)UseABomb()函数,使用炸弹方法,当炸弹数目大于0时,count--,

= "X " + count,炸弹数目减1,并显示炸弹数目。当炸弹数小于

0时,ive (false),ive (false),bomb和

bombNumber状态置为false,隐藏炸弹。

图3-12 BombManager类图

18

2016届毕业论文设计

3.2.2 暂停游戏

游戏暂停是在屏幕右上角添加一个暂停按钮,在游戏过程中可以实现游戏暂

停或播放,对游戏的整体控制。将暂停按钮放在场景中,给暂停按钮添加Box

Collider 2D刚体,添加Audio Sourse组件,使暂停按钮发出声音,给暂停按钮添

加脚本,实现游戏暂停播放。下面暂停游戏暂停的类。

(1) GamePause类的设计

GamePause类的主要属性和方法如图3-13 GamePause类图所示。

图3-13 GamePause类图

本类中方法说明:

1)OnMouseUpAsButton()函数,暂停按钮方法,GameManager._instance.

transformGameState (),点击按钮后改变游戏的状态。 (),给按钮添加

audio,实现声音的播放。

(2)GameManager类的设计

GameManager类的主要属性和方法如图3-14 GameManager类图所示,

GameManager类的属性如表3-8所示。

表3-8 GameManager类的属性表

可见性

可见

可见

可见

属性名称

Score

GuiText

gameState

类型

Int

GUIText

GameState

属性

Public

Private

Public

说明

游戏分数

声明guiText用户文本

定义共有变量存储游戏状态

本类中方法说明:

1) Update()函数,Update方法,存放分数的guiText文本。

2) transformGameState()函数,改变游戏状态方法,当状态为GameState.

19

2016届毕业论文设计

Runing时,调用pauseGame()方法;当状态为GameState.

Pause时,调用

continueGame ()方法。

3) pauseGame()函数,游戏暂停函数,ale = 0设置时间暂停,

游戏的状态为。

4)continueGame()函数,继续游戏函数,ale = 1设置时间

播放,游戏的状态为GameState.

Runing。

图3-14 GameManager类图

3.2.3 重新开始

战机死亡后游戏结束,游戏结束界面显示当前得分和历史最高分,屏幕左下

角是重新开始按钮,右下角是退出游戏按钮。重新开始游戏里主要有三个类

GameOver类、Quit类和Restart类,这里主要介绍GameOver类。

(1) GameOver类的设计

GameOver类的主要属性和方法如图3-15GameOver类图所示,GameManager

类的属性如表3-9所示。

表3-9 GameManager类的属性表

可见性

可见

可见

属性名称

highScore

nowScore

类型

GUIText

GUIText

属性

public

public

说明

历史最高分的文本

当前得分的文本

本类的方法说明:

1)Show()函数,显示当前分数方法,当当前得分大于历史最高分时,

20

2016届毕业论文设计

将当前得分传递给历史最高分,at("historyHighScore",

nowScore),显示历史最高分 = historyScore + "",显示当前得分

= nowScore + ""。

图3-15 GameOver类图

(2) Quit类和Restart类的设计

Quit类的主要属性和方法如图3-16 Quit类图所示,Restart类的主要属性和方法如

图3-17 Restart类图所示。

图3-16 Quit类图 图3-17 Restart类图

4 游戏界面实现和测试

4.1 游戏界面的实现

(1)游戏初始化界面

游戏初始化,显示游戏的背景图片循环播放,载入玩家战机,显示玩家战机

动画播放,玩家战机的血条,初始化时血条的值是100%,颜色是红色,当战机

被击中后血条会减少。游戏的暂停键显示在屏幕的右上角,可以控制游戏的暂停

或运行状态。效果图如图4-1游戏初始化所示。

21

2016届毕业论文设计

图4-1 游戏初始化 图4-2 战机击毁敌机

(2)游戏运行状态界面

游戏运行时孵化器会一直生成敌机和奖励,3种敌机产生的速度不同,生命

值不同,击毁敌机获得分数也不同。小型敌机0.5s生成一个,飞行速度为3,生

命值为1,击落所得分数为100分;中型敌机5s生成一个,飞行速度为2,生命值

为5,击落所得分数为500分;大型敌机10s生成一个,飞行速度为1,生命值为15,

击落所得分数为1500分。两种奖励的生成速度分别为7s和15s,获得超级子弹奖

励后玩家战机的子弹变成了两侧机翼同时发射,超级子弹的时间为10s,10s后自动

变成普通子弹;获得炸弹奖励后左下角会显示炸弹图标和炸弹数量,效果如图4-2

所示。

当子弹击中敌机后敌机会播放爆炸动画,子弹碰撞敌机一次,敌机的生命值

减一,当敌机的生命值小于等于0时开始播放爆炸动画,爆炸动画是由定义的爆

炸精灵数组播放,图4-2显示的是大型敌机被击毁后的爆炸动画。

当战机被敌机击中后血条会减少,击中一次血条减1/4减少部分变成黑色背

景,血条上方显示当前的分数。当获得炸弹奖励后,左下角会显示炸弹图标和数

22

2016届毕业论文设计

量,点击空格键会使用炸弹,炸弹会炸掉当前屏幕中的所有敌机,同时炸弹的数

量减一,当炸弹的数目小于等于0时炸弹图标自动隐藏。如图4-3所示,屏幕中的

炸弹炸毁所有的敌机,正中间的云是大型敌机爆炸动画的最后一帧。炸弹爆炸时

不会炸掉奖励,玩家战机可以同时去吃掉奖励。

(3)游戏暂停和结束

游戏暂停的实现很简单,点击右上角的暂停按钮,游戏就可以暂停,暂停后

屏幕中的战机不能移动,敌机也不能飞行,屏幕的动画都静止。再次点击按钮游

戏状态变成播放,可以继续游戏。

游戏结束界面是当玩家战机的血条为0 时,战机死亡,游戏结束。玩家战机

被击中4次血条为0 ,判定死亡游戏结束,结束界面显示历史最高分和最终得分。

屏幕的左下角显示重新开始游戏和退出游戏按钮,点击重新开始游戏按钮,进入

游戏初始化界面,开始游戏。点击退出游戏按钮退出游戏。结束界面如图4-4所

示。

图4-3 炸弹炸掉所有敌机 图4-4 游戏结束

23

2016届毕业论文设计

4.2 游戏的测试

测试是软件开发过程中的一个重要组成部分,是用来确认一个开发的程序的

品质或性能是否符合开发之前所提出的要求的过程。在软件正式投入使用之前需

要对软件进行测试

[19]

。软件测试是发现软件中的错误和缺陷的主要手段。

在一般情况下,软件的测试过程与整个软件的开发过程基本上是同时进行的,

并且软件测试的计划应该在软件需求分析的阶段就已经开始制定了。软件测试的

工作也会伴随着软件开发的过程逐步展开。

软件调试的任务是根据软件功能说明书和软件实施方案决定的,它将对游戏

软件设计的结果进行全方位的检查,找出并改正其中的错误,使软件可能会发生

的错误或者问题,都在软件正式投入使用之前尽量消灭。

4.2.1 测试方法

游戏的测试主要分四个步骤完成,游戏功能单元测试,游戏组装测试,游戏

功能确认测试和游戏的系统测试。

游戏功能单元测试就是对游戏软件的每一个细分的单元模块分别进行测试,

游戏开始模块、游戏暂停模块、游戏结束模块,在单元测试基本完成后,如果哪

个单元模块出现了问题,就要对程序的bug进行调试修复。在所有的功能都可以

正常运行后,然后才把各个单元模块组装起来进行组装测试,判断所有功能模块

界面之间的切换是否成功顺利,所实现的功能是否满足开题时所提出的要求。

最后需要进行的是软件的系统测试,即把经过集成测试后的的游戏软件放到

真机环境中进行运行,测试其是否可以顺利运行,这样也可以检测软件的系统兼

容性。在测试过程中要注意声音的测试,游戏中每一个精灵都有相应的声音,测

试时注意游戏声音是否正常,整体的游戏音乐是否合适等等。

游戏的功能组装测试采用的是增殖式组装测试,这种测试方法首先对一个个

模块进行模块测试,然后将这些模块逐步组装成较大的系统,在集成的过程中边

连接边测试,以发现连接过程中产生的问题,通过增殖逐步组装成为要求的软件

系统

[20]

4.2.2 设计测试用例

(1)战机移动的测试用例设计,包括游戏运行时战机移动,游戏暂停后战机不

能移动,用例设计如表4-1 玩家战机移动用例表所示。

24

2016届毕业论文设计

表4-1 玩家战机移动用例表

001玩家战机移动测试用例

测试项目名称:玩家战机移动

测试用例编号:001 测试人员:田甜 测试时间:2016.5.10

测试内容:按下鼠标左键玩家战机移动,暂停游戏战机不能移动。

测试环境配置:unity4.5.0,编辑器 MonoDevelop

进入游戏界面以后控制玩家战机移动;暂停游戏,

测试进行

移动战机。

测试次数

预期结果

暂停游戏后战机不能移动。

进入游戏界面,按下鼠标左键控制战机的移动,观

测试过程

察战机是否跟随鼠标的方向移动。当游戏暂停后战

机不能移动。

开始游戏界后按下鼠标左键玩家战机移动;暂停游

测试结果

戏,战机不能移动。

测试结论

备注

游戏此功能实现。

5次。

开始游戏后按住鼠标左键控制玩家战机移动飞行;

(2)敌机被击中的测试用例设计,当敌机被子弹击中后敌机的生命值减少,小

于等于0后播放游戏爆炸动画,不同的敌机生命值不同,移动速度也不同。敌机

被击落后增加相应的分数。设计的测试用例如表4-2所示。

表4-2 敌机被击中爆炸用例表

002敌机被击中爆炸测试用例

测试项目名称:敌机被击中爆炸

测试用例编号:002 测试人员:田甜 测试时间:2016.5.10

测试内容:当敌机被子弹击中后敌机的生命值减少,小于等于0后播放游戏爆炸动

画。

25

2016届毕业论文设计

测试环境配置:unity4.5.0,编辑器 MonoDevelop

进入游戏界面以后控制玩家战机移动发射子弹攻击

测试进行

敌机,查看敌机爆炸动画,增加相应分数。

测试次数

预期结果

数。

进入游戏界面,按下鼠标左键控制战机的移动发射

测试过程 子弹攻击敌机,不同敌机攻击次数不同,查看所得

分数 。

小型敌机被攻击1次就死亡,得100分,中型敌机

测试结果 被攻击15次就死亡,得500分,大型敌机被攻击15

次就死亡,得1500分。死亡有爆炸动画播放。

测试结论

备注

游戏此功能实现。

5次。

敌机被击中后死亡,播放爆炸动画,增加相应的分

(3) 战机被击中的测试用例设计,当战机被击中一次后血条减少四分之一,血

条减少部分背景变成黑色,被击中四次后战机死亡,进入游戏结束界面。战机被

击中测试用例如表4-3所述。

表4-3 玩家战机被击中用例表

003玩家战机被击中测试用例

测试项目名称:玩家战机被击中

测试用例编号:003 测试人员:田甜 测试时间:2016.5.10

测试内容:当玩家战机被击中后血条减少四分之一,血条减少部分背景变成黑色,

被击中四次后战机死亡,进入游戏结束界面。

测试环境配置:unity4.5.0,编辑器 MonoDevelop

进入游戏界面以后控制玩家战机移动,查看战机被

测试进行

击中次数以及血条减少量和颜色变化

测试次数 5次。

26

2016届毕业论文设计

被击中一次血条减少四分之一,血条减少部分背景

预期结果 变成黑色,被击中四次后战机死亡,进入游戏结束

界面。

进入游戏界面,按下鼠标左键控制战机的移动发射

测试过程 子弹攻击敌机,查看战机被击中次数以及血条减少

量和颜色变化。

被击中一次血条减少四分之一,血条减少部分背景

测试结果 变成黑色,被击中四次后战机死亡,进入游戏结束

界面。

测试结论

备注

游戏此功能实现。

4.3 游戏测试总结

通过功能性测试测试游戏的主要功能实现,测试过程中发现很多小细节,比

如在暂停游戏后玩家战机还能移动,当松开鼠标左键移动位置后再次控制战机,

战机会发生跳动情况等等。测试是必须的,正规的游戏测试在游戏设计好后,根

据游戏需求规格说明书,设计测试用例,在游戏模块编码好后,进行模块的功能

测试,然后进行单位测试,集成测试、系统测试和验收测试。

用户体验测试也很重要,针对特定的用户群体,假设你是玩家,在试玩过程

中希望游戏的反馈和提示是否合适与及时。游戏系统除了游戏思路的设计还有界

面是否美观合理,各个人物场景的音乐设置是否合理,玩家接受度高不高等等,

这些都是需要考虑的。

游戏的性能测试也是很重要的地方,一款游戏发行后,游戏响应时间太长,

所占内存太大,灵活性又不高,那么它的用户体验一定不好,不能很好的适应市

场的需求。在游戏的时间特性上,要求响应时间和更新处理时间都比较快,且时

间设定都要合理,软件都能及时触发相应的操作。操作的灵活性上,游戏中的人

物操作要求简单灵活,Unity3D要求对于碰撞检测的处理灵活且合适,要达到合

适的碰撞检测要求需要多多动手实践。

27

2016届毕业论文设计

5 总结

基于Unity3D的飞机大战游戏是在unity上开发的一款飞机大战游戏,制作游

戏unity版本是4.5.0,编辑器是MonoDevelop,用C#脚本语言编写的。游戏实现了

游戏流程中的所有功能,界面布局更加人性化,并有着良好的可扩展性。玩家战

机可以移动发射子弹击落敌机获得分数,也可以躲避敌机,当战机被击中后血条

减少,被击中四次战机死亡,进入游戏结束界面,显示当前得分和历史最高分。

战机可以获得奖励,发射超级子弹,使用炸弹炸弹屏幕内所得敌机。

通过飞机大战游戏的制作,我对Unity3D和C#语言有了更深层次的了解,发

现自己很多问题所在,对基础知识掌握不是很全面,对知识的运用能力也很不足,

真正实践后发现很多东西都是只知其一不知其二,以后还需要更加努力。C#语

言是一门面向对象语言,运用面向对象思想去编程,自己的编程能力还有待提高,

很多功能都不能实现,还需好好学习,

游戏还有很多需要补充完善的地方,游戏还可以做成关卡模式,一关关挑战。

游戏需要做成联网模式,可以登录保存游戏数据,可以分享给朋友,邀请小伙伴

一起来挑战。游戏的声音模式也可以做成可调节的,根据玩家自己设置。这些都

是有待完善的地方,还要继续努力。

28

2016届毕业论文设计

参考文献

[1] 吴亚峰,于复兴.Unity3D游戏开发技术详解与典型案例[M].北京:人民邮电出版社,2012.

[2] 路朝龙.Unity权威指南[M].北京:中国青年出版社,2014.

[3] Unity Technologies , Unity官方案例精讲[M].北京:中国铁道出版社,2015.

[4] Creighton R.H.. Unity 3D Game Development by Example Beginner's Guide[M].Packt

Publishing, 2010.

[5] S Blackman. Beginning 3D Game Development with Unity[M].

Burlington, MA: Morgan

Kaufmann Publishers

,2015.

[6] Mike Geig, Unity游戏开发入门经典 [M].

北京:人民邮电出版社,2015.

[7] 张金钊.Unity3D游戏开发与设计案例教程[M].北京:清华大学出版社,2015 .

[8] 宣雨松.Unity3D游戏开发[M].北京:人民邮电出版社,2012.

[9] 加藤政树,译者:罗水东. Unity游戏设计与实现[M].北京:人民邮电出版社,2015.

[10] Will Goldstome,译者张检阅. unity3X游戏开发经典教程[M].北京:科学出版社,2014.

[11] 张娜,魏新红. C#可视化编程技术[M].北京:清华大学出版社,2015.

[12] Jeffrey Richter,C#与.NET开发指南/第4版[M].南京:东南大学出版社, 2014.

[13] 郭浩瑜.Unity 3D ShaderLab开发实战详解[M].北京:人民邮电出版社,2014 .

[14] 金玺曾.Unity 3D2D手机游戏开发[M].北京:清华大学出版社,2014.

[15] 李瑞森,王至.Unity 3D游戏场景设计实例教程 [M].北京:人民邮电出版社,2014.

[16] 胡思康.软件工程基础.第2版[M].北京:清华大学出版社, 2015.

[17] 舒坚,陈斌全.软件工程[M].北京:高等教育出版社,2015.

[18] 邹盛荣.UML面向对象需求分析与建模教程[M].北京:科学出版社,2015.

[19] 李千目.软件测试理论与技术[M].北京:清华大学出版社;2015 .

[20] Stephen re testing : principles and practice[M].Packt Publishing,2012.

29

2016届毕业论文设计

致 谢

本课题的设计和论文撰写过程中,我的指导老师鲁伟军老师给于了我极大的

帮助,为我提供了大量的相关资料。在完成课题设计的过程中,老师在总体设计

思想上给予了许多重要的实际指导,拓展了我的思路,使得我得以完成了任务。

在写论文过程中,老师每周都抽出时间对我们进行指导,给我们讲解论文的要求,

写作的思路以及要注意的问题,给了我很多很多的帮助。鲁伟军老师严肃的科学

态度,严谨的治学精神,精益求精的工作作风,对学术一丝不苟的高尚品德和人

格魅力深深地感染和激励着我,今后也会成为我生活和工作追求的标榜。 在此,

我对鲁伟军老师的指导表示衷心的感谢。

同时,我也衷心的感谢学校对我的精心栽培,良好的校园环境、精良的师资

队伍、浓厚的校园文化都让我深深怀念,都为我进入社会提供了莫大的帮助。感

谢在百忙之中抽出时间参加答辩的老师们,感谢你们对毕业设计工作的辛勤投入

和付出。感谢在毕业设计中给予我帮助的同学,在游戏制作过程中遇到很多问题,

同学给我讲解了很多系统的问题,C#语法问题等等,谢谢他们帮助。

最后我要感谢挚爱我的父母,感谢你们对我默默支持和奉献,感谢你们对我

的爱,让我学会了宽容与理解。我以后一定会继续努力,成为你们的骄傲。

30

本文标签: 游戏战机敌机玩家子弹