《基于unity3d的塔防游戏的设计与实现.doc》由会员分享,可在线阅读,更多相关《基于unity3d的塔防游戏的设计与实现.doc(44页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、基于unity3d的塔防游戏的设计与实现摘 要塔防,即炮塔防御(Tower Defence),也统称TD ,指一类通过在地图上建造炮塔或类似建筑物,以阻止游戏中敌人进攻的策略型游戏,要有阵图。塔防受众很广,游戏模式简单而且可玩性极强,时至今日,塔防在游戏应用中依然是最热门的下载类型之一,比较经典的像植物大战僵尸。本设计使用当前流行的跨平台游戏引擎Unity3d,编程语言为C#。在游戏中,玩家可以在任何空白的地块上建造各种防御塔用于攻击不同类型的怪物,怪物会按照预定的路线前进,当进入目的地的怪物到达一定数量后游戏会失败;当进入目的地的怪物没有到达指定数量且所有怪物都被击杀后游戏通关。使用Unit
2、y3d引擎来设计让UI、游戏地图的布置大幅简化。并通过使用拓展性强的类,使得开发者能快速添加新的怪物、防御塔等,提高开发效率的同时,还降低了游戏的开发成本。本文主要从选题背景与意义、可行性与需求分析、游戏设计与功能实现、测试等四个方面,按照制作的流程对本次设计进行论述,对开发的思路、实现以及实现过程中的主要问题都予以描述记录。关键词:游戏;塔防;Unity3d;PCDesign and Implementation of a virtual city building gameAbstractTower defense, that is, turret defense, also known
3、as TD, refers to a kind of strategic game that blocks the enemys attack in the game by building turrets or similar buildings on the map. Tower defense has a wide audience, simple game mode and strong playability. Today, tower defense is still one of the most popular download types in game applicatio
4、ns, such as the classic Plants vs. Zombies.This design uses the current popular cross platform game engine unity3d, and the programming language is C. In the game, players can build various defense towers on any blank land to attack different types of monsters. Monsters will advance according to the
5、 predetermined route. When the number of monsters entering the destination reaches a certain number, the game will fail. When the number of monsters entering the destination does not reach a specified number and all monsters are killed, the game will pass the customs. Use unity3d engine to design an
6、d simplify the layout of UI and game map. And through the use of expanding classes, developers can quickly add new monsters, defense towers, etc., improve development efficiency, but also reduce the development cost of the game.This paper selected topic background and the significance, feasibility a
7、nd requirement analysis, game design and function implementation, testing, and so on four aspects, according to the production process of this design is discussed, the development idea and the main problems in the process of implementation and the implementation of all records shall be described.Key
8、words: Virtual game;Unity3D game engine;The interactive of games41目 录1前言11.1论文结构安排11.2研究的目的与意义12 可行性研究32.1技术可行性32.2经济可行性32.3操作可行性42.4总结43 游戏概要设计53.1总体概述53.2游戏功能设计53.2.1地图与路线53.2.2敌人63.2.3防御塔63.2.4武器系统83.2.5特效设计83.2.6各种UI94 游戏具体实现114.1程序实现114.1.1建造管理模块114.1.2游戏进程管理模块114.1.3敌人模块124.1.4敌人生成器模块124.1.5游戏
9、菜单模块124.1.6可建造地块模块134.1.7防御塔模块134.1.8防御塔数据模块134.1.9游戏视角控制模块144.1.10敌人进攻波次模块144.1.8敌人行进路线模块145 测试145.1交互界面145.2游戏过程155.3测试总结176 总结18参考文献19谢 辞20附 录201前言Unity,也称Unity3D,是近几年非常流行的一个3D游戏开发引擎,跨平台能力强,使用它开发的手机游戏数不胜数。8Unity3d是如今游戏开发过程中比较流行的虚拟现实和跨平台游戏开发的虚拟交互式引擎。这几年,不仅Web应用、移动设备的App应用等得到迅猛发展,而且软件开发模式及其管理也发生了较大
10、的变化。9Unity3d引擎为游戏开发者提供了易用的可视化编辑器、资源导入导出、动画与物理系统、光照与音效系统以及对多达21个平台的发布支持等等的功能。除此之外,在Unity3d从发布至今的多年发展中,网络上对于开发者提供的教材文档十分的丰富,官方的Asset Store里面也提供十分丰富多样的插件,由而多年来Unity3d引擎深受开发者的喜爱、逐步成为全球开发者普遍试用的交互式引擎。1.1论文结构安排本论文共有六章。结构安排如下:第一章:对游戏现状和发展前景、项目的研究目的和意义进行了简要介绍。第二章:对此项目的可行性分析,包括技术、经济、操作三个方面,并做出总结。第三章:对游戏的概要设计和
11、游戏的主要功能进行介绍。第四章:对游戏的类的详细阐述,介绍了游戏功能的具体实现,对游戏架构的各个部分与其相对于的代码部分进行分析。第五章:对游戏进行测试,包括测试的方法与测试的功能,并对此作出总结。第六章:总结本次项目的实现过程与体会。1.2研究的目的与意义随着智能化电子产品的普及,游戏产业已成为经济市场中增长速度最快的热点,近几年来,Android 平台游戏以及Web的网页游戏迅速发展,已经成为带动游戏产业发展的中坚力量。9知识经济的核心内容之一是创意经济,创意经济也是知识经济的重要表现形式,可以说,没有创意,就没有新经济。作为文化创意产业中重要的部分,游戏设计是商品生产与文化艺术创意的一次
12、碰撞下的产物,在中国的经济发展中,游戏产业占据着十分重要的的地位。截至2015年上半年,中国游戏市场实际销售收入达到605.1亿元人民币,同比增长21.9%。2国内的首款自主研发的3d游戏是在2003年,相对于美国最早的第一人称3d射击游戏重返德军总部晚了十年左右,虽然目前国内3d技术日益加强,但毕竟起步较晚,与国外存在着不小的差距,只有少数大型的互联网公司能够从设计理念出发并应用到开发制作上,其余大部分游戏公司和游戏开发者依旧使用国外的游戏引擎,比较出名的有:虚幻引擎、寒霜引擎以及Unity3d引擎,要想开发一款优秀的游戏,人工智能必不可少。1不过,随着智能化设备的快速普及,现阶段国内的游戏
13、市场竞争很激烈,尤其是移动端,自2017年国内移动游戏市场进入黄金时代以来,游戏APP从种类到数量皆呈现爆发式增长,玩家人数与日俱增,涵盖的玩家年龄段也越来越广。2可行性研究2.1技术可行性本设计基于Unity 3d引擎,采用C#开发脚本,C#是由Microsoft公司开发的一种面向对象的编程语言。作为使用.NET Framework的Windows和Web开发人员无可争议的首选语言,C#语言提供了Visual Basic的简单易用性,同时也提供了Java和C+语言的灵活性和强大功能。4目前比较流行的开发引擎有Unity 3d、Cocos 2d-x、Unreal Engine 3等。虚幻3引擎
14、具有高优先级的动态演示管道和其他演示效果,但对多核CPU的支持很差,而且大多数插件都必须付费,而且国内这方面的学习资源也较少,这对学生个人开发群体来说不是很合适。但是Cocos 2d-x是为2T游戏开发的游戏引擎,不适合这种设计。与前两个相比,Unity3d在技术支持和技术可见性方面更适合像作者这样的学生开发人员。自从2012年Unity正式进入中国市场以来,中国越来越多的业内知名企业开始将选择Unity引擎开发作为其移动端战略部署的重要组成部分,使用Unity开发的诸多游戏都在市场上大方异彩。6Unity3d是一个综合性的游戏开发工具,用于创建交互式多媒体内容,如3D视频、视频、实时3D动画
15、等。同时,unity3d拥有免费的开发资源和免费的强大插件,非常适合常用的3D类应用。如果你正在为寻找合适的开发工具而焦头烂额时,不妨尝试一下Unity3D这个引擎。如果需要制作2D/3D的游戏产品,那么它是一个不可多得的游戏引擎工具;如果需要制作AAA级画质的数字交互产品,那么它可以为你提供高效优质的渲染效果。5从上可以看出,unity3d加入可视化引擎视图为初级的开发者提供了很大的方便,由于其能够将项目发布于多平台,它使开发者能够更加关注游戏技术的研究,而不是代码平台兼容性上需要时间问题的问题。综上所述,本设计基于一个使用C#脚本开发的unity3d引擎,在技术上是可行的。2.2经济可行性
16、此次塔防游戏设计是单机游戏,开发引擎使用的是Unity3d,使用的是免费的个人版,将游戏打包至PC或手机端上即可游玩。此次设计的开发是独立开发,开发人员是笔者,没有团队上的开销,游戏所投入的成本很低,主要集中在游戏资源(如模型、材质)的收集以及游戏本体的开发。Unity是一款标准的商业游戏引擎,而商业引擎的主要特点有收费、封闭源码和功能强大。关于收费情况,Unity的使用费用非常昂贵,最便宜的普通版许可证也需要400美元,加强版本为1500美元。当然许可证的版本不同,引擎支持的功能也就截然不同。具有加强版许可证的引擎的很多强大功能是有普通版许可证的引擎所不具备的。但是从学习的角度来说,无须购买
17、许可证同样可以进行,因为许可证更大的用处在于游戏制作完成后的打包与发布,不购买许可证制作的游戏是无法发售的,不过,单就学习而言,我们完全无须购买许可证,选择免费的Unity即可。7综上所述,本次设计在经济上可行。2.3操作可行性此次塔防游戏在操作界面采用极简的风格,操作十分的简易明了,unity3d引擎为游戏界面的设计提供了良好的设计平台。游戏里所使用的图标如炮塔的图标皆取自炮塔本身使用的模型的贴图,在配合上与游戏界面风格相似的文本文字,游戏整体的风格是连贯一致的,玩家对游戏的操作仅仅只需点击或放大缩小,加上本次游戏规则采用传统塔防的游戏机制,因此玩家能够迅速掌握游戏要领,轻松便捷的畅游。综上
18、所述,本次设计在操作上可行。2.4总结本次塔防游戏的设计,在技术层面、经济层面以及操作层面三个层面上看,都具有高度可行性。Unity3D引擎给此次设计提供了技术层面的支持,C#语言是脚本功能运行的保障;单机小游戏的设计规模使得个人独立开发成为可能,开发成本很低,经济上没有太大问题;而简单的操作和极简的风格在如今电脑、智能机普及的当下掌握起来不过几分钟,经典的塔防模式也降低了游戏门槛和学习成本。综合以上论述表明,本次设计在基于Unity3D引擎下,使用C#脚本开发一款经典塔防类的游戏,是可行的。3游戏概要设计3.1总体概述游戏题材:经典塔防游戏游戏类别:策略类游戏游戏玩法:颜色不同的圆球形状的敌
19、人从地图的蓝色正方体中进入地图,经过预设的黑色道路行进,进入地图的粉色正方体(即目的地),玩家需要在这些敌人行进的路线附近建造各种类型的防御塔,用以攻击经过的敌人,在敌人进入粉色正方体前将敌人击杀。敌人有若干进攻波次,在每一波过后敌人都会变得更强,玩家也需要通过建造更多的防御塔或升级已有的防御塔来加强防御力。当进入粉色正方体的敌人到达一定数量后,游戏会失败。要想通关,玩家需顶住敌人的进攻,直到最后一波敌人被歼灭。3.2游戏功能设计本设计的主要功能包括:游戏地图与敌人的行进路线、各种各样的敌人以及敌人的生成器、各种防御塔、资金的显示以及各种特效。3.2.1地图与路线游戏地图的构成要素包括:可建造
20、地块、敌人的行进路线、敌人生成位置、敌人进攻目的地。图3.1游戏场景图此图显示的视角即为游戏内摄像机的位置,其中,白色方格为可建造地块,即防御塔建造的位置,黑色道路为敌人行进路线,蓝色正方体为敌人生成器,游戏内的敌人均从此处生成并以此为行进路线的起点,而红色正方体即为敌人行进的终点,当敌人到达此处时,游戏宣布失败。3.2.2敌人此次共设计了五种敌人,外形皆以圆球形状,以不同颜色分为普通型(红色)、速度型(橙色)、极速型(黄色)、加强型(绿色)、Boss(蓝色)。敌人最重要的属性,是敌人的血量、生成速度以及其行进速度。 图3.2各种类型的敌人示意图以普通型敌人为标准,速度型敌人在行进速度和生成速
21、度上有较强的提升,但同时弱化了它的生命值;而极速型敌人则更进一步的作此改变,因此,极速型敌人是游戏里行进速度最快、生成位置最密集的敌人,同时也是游戏里最脆弱的敌人,选用攻速快伤害低的机枪塔能对其进行有效的打击;而加强型敌人是敌人中的精英,在速度上只有较小的提升,但在血量上有极大的提升,与Boss不同的是,Boss只是单独出现,但加强型敌人是成群结对的,不过,其弱点于生成时间较慢,导致加强型敌人之间的间隔较大,阵型散乱,使用攻速慢伤害高的重炮塔,配合上能够造成减速效果的激光塔是打败加强型敌人的关键。Boss,游戏最后的敌人,打败它是游戏通关的关键。Boss的最大的特点就是其无与伦比的血量,但其行
22、进速度是敌人中最慢的,且只单一出现,因此只需集中火力,尽量多的建造重炮塔配合激光塔,少建造机枪塔,尽可能加大对其造成的伤害。打败Boss后,游戏宣布胜利。3.2.3防御塔此次设计中共有三种类型的防御塔,分别为机枪塔、重炮塔以及激光塔。防御塔的属性有:使用的武器系统、攻击伤害、攻击频率、子弹飞行速度、攻击范围、特殊效果。图3.3机枪塔示意图图3.4升级版机枪塔示意图 图3.5机枪塔购买图标机枪塔是游戏中最廉价的防御塔,使用的武器系统是炮弹系统,虽然伤害不高,但其攻击频率高、子弹飞行速度快的特点能够有效对付移动迅速且血量低的敌人,而其廉价的特点能使其被大量建造,弥补其伤害低、攻击范围小的缺陷,将其
23、放置在各个点位能对集群的敌人进行有效的拦截。升级版机枪塔在原基础上大幅提升了其攻击频率,对攻击伤害、攻击范围也有小幅的提升。图3.6重炮塔示意图 图3.7升级版重炮塔示意图图3.8重炮塔购买图标重炮塔是游戏中伤害最高、攻击范围最大的防御塔,使用的武器系统也是炮弹系统,其巨额的攻击伤害所付出的代价是其攻击频率的低下,巨大的炮弹飞行的速度也受到了影响,适合攻击移动速度较慢、生命值较高且单独行动或阵型间隔较大的敌人。升级版重炮塔在原基础上大幅提升攻击伤害和攻击范围,攻击频率不变。图3.9激光塔示意图 图3.10升级版激光塔示意图图3.11激光塔示意图激光塔是游戏中一种特殊的防御塔,它搭载了不同于机枪
24、塔和重炮塔的武器系统激光武器系统,该武器最大的特点在于它造成伤害的方式不是瞬时的,而是持续性的,且能够对正在攻击的目标造成减速效果,适合对付单独行动的或阵型间隔较大的敌人,不过,由于价格昂贵,且杀伤力较于重炮塔还是稍显不足,不适合大量建造,只需在几个关键路口建造即可,主要用于降低敌人的行进速度。升级版激光塔在原基础上提升了攻击伤害与攻击范围,着重增强其对敌人的减速能力。3.2.4武器系统在此次炮弹系统的设计中,共分为两大武器系统,分别是炮弹武器系统以及激光武器系统。图3.12重炮塔开火示意图图3.13激光塔开火示意图炮弹武器系统是瞬时伤害的攻击系统,有攻击频率的属性,机枪塔与重炮塔皆搭载此攻击
25、系统,是主要的武器系统。激光武器系统是持续伤害的攻击系统,专为激光塔而设计,采用激光射线代替子弹和炮弹,能对目标持续造成伤害,最大的特点是其拥有减速能力,提供战术上的支持。3.2.5特效设计在特效设计方面,主要包括三大类:动画类特效、粒子类特效、线渲染类特效。动画类特效主要应用于游戏开始界面、玩家资金提示、防御塔升级面板、游戏结束界面等。粒子类特效主要应用于防御塔的建造、炮弹武器系统、击杀敌人、升级和拆除防御塔等。线渲染类特效专为激光武器系统服务,是实现激光武器系统的构成要素。3.2.6各种UI此次设计的UI包括:游戏初始界面、游戏结束界面、升级面板、玩家资金面板、防御塔购买面板。图3.14游
26、戏开始界面示意图图3.15游戏内场景示意图 图3.16游戏结束界面示意图4游戏具体实现4.1程序实现4.1.1建造管理模块类名:BuildManager说明:控制游戏内建造防御塔、升级防御塔、拆除防御塔相关的操作。方法:void ChangeMoney()、void Start()、void Update()、public void OnLaserTurretSelected()、public void OnMissileTurretSelected()、public void OnStandarTurretSelected()、void ShowUpgradeUI()、IEnumerator
27、 HideUpgradeUI()、public void OnUpgradeButtonDown()、public void OnDestroyButtonDown()。分析:void ChangeMoney()记录了玩家资金的变化;void Start()用于开启与防御塔升级界面相关的状态机;void Update()用于控制防御塔的建造、升级、拆操作;public void OnLaserTurretSelected()用于判断激光塔是否被鼠标选择;public void OnMissileTurretSelected()用于判断重炮塔是否被鼠标选择;public void OnStand
28、arTurretSelected()用于判断机枪塔是否被鼠标选择;void ShowUpgradeUI()用于显示防御塔的升级面板;IEnumerator HideUpgradeUI()用携程的方式来读取升级面板的显示与隐藏的变化并控制其隐藏;public void OnUpgradeButtonDown()鼠标监听升级按钮的点击;public void OnDestroyButtonDown()鼠标监听拆除按钮的点击。4.1.2游戏进程管理模块类名:GameManager说明:控制游戏内菜单、场景切换、游戏流程切换。方法:public void Awake()、public void Win
29、()、public void Failded()、public void OnButtonReplay()、public void OnButtonMenu()。分析:public void Awake()控制游戏开始时的各种操作如启动敌人生成器;public void Win()控制游戏胜利时的UI显示与文本;public void Failded()控制游戏失败时的UI显示与文本;public void OnButtonReplay()监听游戏结束时“重玩”按钮是否被点击;public void OnButtonMenu()监听游戏结束时“菜单”按钮是否被点击。4.1.3敌人模块类名:En
30、emy说明:记录敌人各种属性,包括行进行为、承受伤害以及死亡销毁。方法:void Start ()、void Update ()、void Move()、void ReachDestination()、void OnDestroy()、public void TakeDamage()、void Die()。分析:void Start ()初始化敌人属性、控制敌人开始从起点移动;void Update ()更新敌人行进状态;void Move()控制敌人移动;void ReachDestination()用于销毁到达终点的敌人,同时宣布游戏失败;public void TakeDamage()控
31、制记录敌人承受的伤害,并作出承伤行为;void Die()敌人血量为0时销毁敌人。4.1.4敌人生成器模块类名:EnemySpawner说明:控制敌人在起点生成、每一波次的生成时间、生成的敌人类型和数量。方法:void Start()、public void Stop()、IEnumerator SpawnEnemy()。分析:void Start()用于启动敌人生成器;public void Stop()停止敌人的生成(当游戏失败时);IEnumerator SpawnEnemy()用携程控制每一波生成的敌人,判断条件以作出是否进行下一波敌人的进攻,敌人全部被消灭时宣布游戏胜利。4.1.5游
32、戏菜单模块类名:GameMenu说明:控制游戏的菜单、场景加载以及其相关事件。方法:public void OnstartGame()、public void OnExitGame()。分析:public void OnstartGame()用于加载游戏开始时进入游戏内的场景;public void OnExitGame()控制游戏暂停与退出。4.1.6可建造地块模块类名:MapCube说明:控制游戏的菜单、场景加载以及其相关事件。方法:void Start()、public void BuildTurret ()、public void UpgradeTurret()、public void
33、 DestroyTurret()、void OnMouseOver()、void OnMouseExit()。分析:void Start()初始化地块;public void BuildTurret ()将建造防御塔时的特效实例化并控制其显示时间;public void UpgradeTurret()用于判断当前地块能否升级防御塔,并控制其升级行为和相关特效;public void DestroyTurret()用于判断当前地块能否拆除防御塔,并控制其拆除行为和相关特效;void OnMouseOver()监听鼠标悬停于地块上;void OnMouseExit()监听鼠标悬停离开地块。4.1.
34、7防御塔模块类名:StandardTurret说明:控制防御塔的攻击行为。方法:void OnTriggerEnter()、void OnTriggerExit()、void Start()、void Update()、void Attack()、void UpdateEnemies()。分析:void OnTriggerEnter()用于判断敌人是否进入防御塔的射程之内;void OnTriggerExit()用于判断敌人是否离开防御塔的射程之内;void Start()用于启动防御塔攻击计时器;void Update()控制防御塔炮口的朝向,发动攻击指令,以及决定使用何种武器系统进行攻击;
35、void Attack()记录攻击指令;void UpdateEnemies()更新防御塔发现的敌人数量。4.1.8防御塔数据模块类名:TurretData说明:记录防御塔的类型和各项属性。方法:public enum TurretType。分析:public enum TurretType用于记录激光塔、重炮塔、机枪塔的类型。4.1.9游戏视角控制模块类名:ViewController说明:控制显示游戏场景的摄像机。方法:void Update ()。分析:void Update ()控制键盘上“A”、“W”、“S”、“D”四个键对应的镜头移动,赋予鼠标滚轮放大缩小的功能。4.1.10敌人进
36、攻波次模块类名:Wave说明:记录每波敌人的类型、数量和生成速度。方法:无,非主类。分析:记录每波敌人的类型、数量和生成速度。4.1.8敌人行进路线模块类名:WayPoints说明:控制防御塔的攻击行为。方法:void Awake()。分析:void Awake()用于获取路径点,对每一段行进路线进行赋值操作。5 测试5.1交互界面测试:游戏运行,显示游戏主界面,如下图。图5.1游戏开始界面测试图测试结果:游戏主界面加载成功。测试:点击“START”按钮开始游戏,加载游戏场景。 图5.2加载游戏场景测试图测试结果:游戏场景加载成功,“START”按钮交互成功。测试:点击“EXIT”按钮退出游戏
37、。测试结果:成功退出游戏。5.2游戏过程测试:敌人生成器生成敌人,敌人开始沿进攻路线从起点出发。图5.3敌人生成及行进测试图测试结果:敌人生成器成功生成敌人,敌人成功按路线行进。测试:防御塔建造并攻击敌人。图5.4防御塔建造并攻击敌人测试图测试结果:防御塔成功建造并扣除相应的玩家资金,成功攻击范围内的敌人。测试:防御塔升级及拆除。图5.5防御塔升级及拆除测试图测试结果:防御塔成功升级并扣除玩家资金;防御塔拆除成功。测试:游戏视角控制。测试结果:放大缩小及平移皆成功。测试:游戏胜利宣布。图5.6游戏胜利测试图测试结果:成功。测试:游戏失败宣布。图5.7游戏失败测试图测试结果:成功。5.3测试总结
38、本次测试的主要部分,如交互界面(包括游戏主菜单、游戏场景加载、升级面板、玩家资金)以及游戏过程(从敌人生成并行进到游戏结束的所有过程)测试都没问题,所有流程、功能正常运行。6 总结这此的毕业设计是大学阶段的最后一个大作业。对我来说,这更像是在完成这项任务的过程中对我四年大学生涯的一种成果查验。在这之前,我对unity3d引擎的理解比较浅,这次的设计让我更加熟练去使用unity3d,对这些方面的认识也比以前更加深入。对于我来说,这次一个人完成整个游戏确实是很大的挑战。很多的功能、实现我在一开始都没有很好的考虑到,在制作的过程中发现很多的问题,比如说特效、动画的制作,以及携程的使用等等,常常为制作
39、过程一个小小的BUG而费时很久,也由于是第一次独立开发项目,在整个设计的过程中对于开发进度的掌握还是太过稚嫩,导致许多创意只能停留在计划上,而根本没有去实施,过程中加强对unity3d的使用的同时,也学习C#编程语言,目前,Unity引擎的API有好几千个,并且随着Unity版本的更新,API的数量还会不断增长。对API的熟悉程度直接影响着程序的开发效率,熟悉API也成了新手进阶的必经之路。3为此查阅了很多的资料,也得益于老师不厌其烦的帮助。其中让我觉得受益最大的地方在于,我对游戏开发,或者说独立游戏开发的过程有了一个最初级却比较清晰的了解。我在这个游戏开发的过程中得到了很大的成长,很大程度的
40、提高了自己的开发能力。但是在这过程中对于时间的掌控还是没有做到十分的充分合理,这一点我会牢牢记在心里好好改进。参考文献1 王洪源,Unity3D人工智能编程精粹M.清华大学出版社,2014.112 Unity 5.X从入门到精通M.中国铁道出版社,2016.13 陈泉宏,Unity API解析M.北京:人民邮电出版社,20144 张冬旭,C#编程从基础到应用M.北京:清华大学出版社,20145 张帆,Unity3D游戏开发基础M.浙江工商大学出版社,2013.86 穆海明,刘盼,刘华兴.基于Unity的游戏开发J.通讯世界,2016.87 宣雨松.Unity3D游戏开发M.北京:人民邮电出版社
41、,20128 金玺曾.Unity3D手机游戏开发M.北京:清华大学出版社,20139 朱少民,软件测试方法和技术第2版M.北京:清华大学出版社,201010 刘俊,郭祖.基于Unity3D的塔防游戏的设计与实现J.科技传播,2015.5 谢 辞为时一个学期的毕业设计即将结束了,这也意味者我在北京理工大学珠海学院的大学生涯也即将结束。在毕业设计这段时间里,我得到了很大的自身提高,其中包含了对游戏设计流程的理解、对Unity3d游戏引擎的使用、对C#编程语言的学习以及对有关这方面书籍的认识等等,这些都得益于老师和同学的大力帮助。附 录程序源代码BuildManager建造管理模块using Sys
42、tem.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.EventSystems;using UnityEngine.UI;public class BuildManager : MonoBehaviour /各种类型炮塔的数据; public TurretData laserTurretData;/激光炮台数据; public TurretData missileTurretData;/导弹炮塔数据; public TurretData standardTurretData;/机
43、枪炮塔数据; private TurretData selectedTurretData;/当前选择的炮塔的数据; private MapCube selectedMapCube;/当前选择的场景中的地块; public Text moneyText;/资金的文本; public GameObject upgradeCanvas;/升级的UI; public Button buttonUpgrade; public Animator moneyAnimator;/资金的动画; private Animator upgradeCanvasAnimator;/升级UI的状态机; private i
44、nt money = 10000;/玩家拥有的资金; /玩家拥有的资金的变化; void ChangeMoney(int change = 0) money += change; moneyText.text = 拥有资金: + money; void Start() upgradeCanvasAnimator = upgradeCanvas.GetComponent(); void Update() if(Input.GetMouseButtonDown(0)/判断鼠标是否按下; if(EventSystem.current.IsPointerOverGameObject() = false
45、)/判断鼠标按下的的位置是否在UI上; /新炮台的建造; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);/将鼠标点的位置转化为射线; RaycastHit hit;/射线预检测; bool isCollider = Physics.Raycast(ray, out hit, 1000, LayerMask.GetMask(MapCube);/射线碰撞检测; /判断是否发碰撞; if (isCollider) MapCube mapCube = hit.collider.GetComponent();/得到了点击的mapCube; if (selectedTurretData != null & mapCube.turretGo = null) /可以建造; if (money = selectedTu