《Unity3D塔防游戏的设计与实现毕业论文.doc》由会员分享,可在线阅读,更多相关《Unity3D塔防游戏的设计与实现毕业论文.doc(30页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、江海职业技术学院毕 业 设 计毕业设计题目: unity3D塔防游戏的设计与实现 学 生 学 号: 141010155 学 生 姓 名: 踪训军 所在系 (部): 信息工程系 专 业 及班级: 计算机1401 指 导 教 师: 谭程宏 完 成 日 期: 2017-02-10 摘 要 游戏,目前已经是最大众化的娱乐之一。Unity是这几年非常热门的一种开发引擎之一。它具有非常强力的跨平台能力,其中还包含了图形、音频、物理系统、网络等多方面的引擎支持,是一个2D、3D游戏引擎套件和游戏开发工具,并且有一个非常强大的编辑器来整合这一切,因此被广大游戏开发者所喜爱。 本次毕业设计,围绕手机游戏开发的实
2、现,利用Unity3D游戏开发工具,基于C#语言编写,开发制作一款手机游戏塔防游戏突破重围,并对项目需求及游戏的设计和具体实现进行分析。关键词 塔防,手机游戏,Unity3D,Android 目录第1章 绪论51.1论文结构安排5 1.2市场需求分析61.3项目的简介6第2章 unity3D介绍621 Unity3D总体概述622 Unity3D软件特色7第3章 游戏概要设计8 3.1整体游戏需求83.2游戏截图93.3 设计概要103.4游戏类图113.5游戏流程图123.6游戏主要功能设计133.6.1开场插画133.6.2选关界面的效果133.6.3模型动画的切换133.6.4敌人的AI
3、实现153.6.5释放技能特效的实现173.6.6主角的行走路线173.6.7游戏中的碰撞检测18第4章 游戏具体实现184.1程序实现194.1.1 Emnimy194.1.2 Player204.1.3 GameControl214.1.4 Level224.1.5 MainMenu234.1.6 Moneydate234.1.7 SkillData244.1.8 SkillManger25第5章 结 论28参考文献29致 谢30 IV第1章 绪论1.1论文结构安排 1。1节可以放在绪论的最后本论文共有五章。结构安排如下: 第一章:对游戏开发架构的背景,及项目和对市场的需求分析进行了简要介
4、绍。第二章:unity3D介绍 第三章:突破重围游戏的概要设计和游戏主要功能设计的简介。第四章:突破重围游戏类的详细实现,对游戏架构中各个部分涉及到的相关知识进行介绍,然后给出设计的思路,最后给出具体实现。第五章:总结本次游戏的实现过程。这个和你上面的目录对吗?1.2市场需求分析 与意义 90年代初国外的3D游戏开始起步,第一部3D第一人称射击游戏是美国的卡马克的重返德军总部,最早3D游戏引擎由其开发的Doom引擎。国内3D游戏始于2003年,首款自主研发,目前,国内有了很多的研究在3D游戏上,但是由于国内3D技术起步较晚,技术方面想比外国还是有不小差距,从设计理念到开发制作,国内能有自主研发
5、的3D游戏引擎的,只有屈指可数的互联网公司,大部分游戏公司和游戏开发者还在用国外大型游戏公司所开发的游戏引擎,如Unity3D,虚幻,寒霜。虽然国内今年出现许多优秀的游戏团队和游戏公司,开发了数款质量较高的3D游戏,例如古剑奇谭系列,仙剑奇侠传系列等,但是比起模拟人生,魔兽世界,战地系列等国际游戏大作仍有不可逾越的差距,这也使得国内玩家的财富大量流向国外。 随着移动设备的硬件日益强大,如手机的硬件相比于10年前电脑的配置还要强大,这样使用者在使用的时候,就会有大量应用的需求,目前来说,有两种主流的手机操作系统:Android和IOS,这两种操作系统之所以成为主流,就是因为庞大的系统应用在背后支
6、持,所以,应用的开发在手机系统的竞争中尤为重要。然而应用的跨平台移植会带来大量的问题,例如开发语言不同,移植代价太高等,但是,国外开发的一款游戏引擎完美地解决了跨平台开发难的问题,那就是Unity3D引擎,虚拟机技术被运用到Unity3D中,独立于平台执行的游戏编译结果。对于3D引擎的研究,在国内还处于起步阶段,所以我们认真研究国外的优秀游戏引擎,对将来自主开发3D游戏引擎有巨大的帮助。随着移动智能设备的快速普及,先后有BAT等互联网巨头的加入与PC端游厂商的转型或设立移动游戏研发部门,进军移动游戏市场,争先恐后来分这块大蛋糕,可说现阶段国内移动游戏市场竞争十分激烈,正处于一片红海,然而201
7、7年对移动游戏市场来说也正是进入黄金时代的开始。这块你全面复制粘贴了?自己精简一下,突出引用Unity3D的意义与优势。1.3项目的简介本论文主要构思为2D类塔防游戏,传统的塔防都是电脑按照一条既定的路线进攻,玩家也只是单纯防守的模式,而本论文设计开发的这款游戏则是电脑防守、玩家进攻的模式。同时,玩家有大量新技能可以使用,下面的,你自己在组织下自己的语言, 参照语文的语句标准。操作方式也参照其他流行游戏,例如天天过马路那种简单操作的设计理念,玩家只要点击手机屏幕就可以控制。游戏的平台为安卓。通过Unity3D游戏开发工具以及NGUI插件工具,基本上实现了整个游戏的制作。利用C#语言和Mono
8、Development编译工具,编写各个脚本代码,让游戏的各项操作跟游戏中的碰撞效果、NGUI界面、粒子特效都得以实现。第2章 unity3D介绍1.2 Unity3D的介绍121 Unity3D总体概述Unity3D是由丹麦Unity公司开发的游戏设计开发工具,拥有强大的跨平台发布能力,支持多种语言编辑,可开发运行在PC、Mac OS、PS3、XBox360、Wii、IOS、Android等平台,也可利用Unity Web player插件发布网页游戏,以及支持开发线上游戏(网络游戏),是一个全面整合的专业游戏引擎。Unity3D提供了容易上手的操作界面,支持PhysX物理引擎、粒子系统等,
9、降低了游戏开发的门槛,缩短了游戏开发的时间以及制作成本。Unity简单直观的设计界面、高度的兼容性,使得游戏设计开发者能高效地完成工作。因此,Unity成了目前国内很多游戏开发者和VR开发者的首选工具之一。分层次写122 Unity3D软件特色 写这些特色前要先综合一小段。你写的Unity 3D的特点,不要写本游戏中用到的啥啥的,如果真要写,可以放到后面第三章等。综合编辑:通过Unity简单的用户界面,用户可以完成任何工作,这些为用户节省了大量的时间。在本论文中的游戏编程过程中,可以整体对每一个界面进行编辑,节约了一个一个打开每个界面的时间,并且程序可以在界面中共享,节约了大量的相同程序重复编
10、辑使用的时间,提高了整体的效率。 资源导入:Unity支持所有主要文件格式,并能和大部分相关应用程序协同工作。本游戏中使用的JPEG格式的图片可以尽数导入Unity3D中进行编辑,对于游戏的整体实现十分有利。一键部署:Unity可以让作品在多平台呈现。利用File选项中的BuildSetting功能,可以选择平台来发布游戏,可供选择的方案十分齐全,完成的作品可以发布到Windows、Android、IOS平台等,对于本次毕业设计的要求发布到移动平台上,Unity3D更是可以完全满足需求。iPhone以及Android发布:Unity让革命性的游戏开发降临革命性的设备。这正是我们这次毕业设计的核
11、心,移动平台的发布可以满足更多群体的需求,这也是为什么采用Unity3D作为本次毕业设计核心软件的原因。音频和视频:实时三维图形混合音频流、视频流。在本游戏中,我在主界面内添加了声音控件,以达到使本游戏更具吸引力的效果。脚本:Unity支持3种脚本语言:JavaScript,C#,Boo。本次游戏的设计,编程主要使用到了C#语言,Unity3D对于C#语言的支持使得程序的制作者可以尽可能地完成所需功能的设计以及实现。Unity资源服务器:Unity资源服务器是一个附加的包括版本控制的产品。文档:Unity可以提供逐步的指导、文档和实例方案。在编辑过程中遇到问题时,可以对所需知识寻求帮助,这一点
12、对本次毕业设计帮助很大。因为本身对于Unity3D这款软件的认识有限,所以当有指导、文档和实例方案作为参考后,编程的过程更轻松了,通过借鉴Unity3D自带的实例能找到可以触类旁通的编程设计方法。拖动操作:Unity3D软件中大部分的操作都可用拖动操作来实现,使Unity3D包、模型、字体、图片等资源的导入步骤变得非常简单,只需要将资源拖入到相应的位置便可以实现导入,简化了操作,节约了时间,提高了开发的效率。 第3章 游戏概要设计 3.1整体游戏设计 先要描写你游戏的情节,让不懂的人看了就明白。突破重围游戏是基于安卓平台的一款手机游戏,主要完成游戏功能如下:这句话别扭吗?1、 敌人的AI敌人一
13、共有4个状态:观望状态、巡逻状态、攻击状态、死亡状态,每个状态间的转化都是用UNITY里的Animation系统的状态机去改变。2、 玩家的技能玩家一个有8个技能:疾跑、坚韧、隐身、命运、治疗、伪装、先发制人、赌博,每个技能在每个关卡只能使用一次。3、 玩家的移动为了简化玩家的操作,所以只要触摸屏幕就可以实现移动。4、 各个UI界面的实现游戏的UI界面有:开场插画界面、主界面、设置界面、选关界面、加载界面、失败界面。3 . 2游戏截图下面这些图片务必要跟在你的某一个段下面,你自己可以看看别人的论文样式!图2-1 游戏开场动画界面图2-2 游戏主界面画面图2-3游戏选关画面图2-4 loadin
14、g界面图2-5 游戏画面3.3 设计概要 就是故事描述吗?如果是,请按我的要求和上面合并在主场景(主画面)中,有4个按钮,分别是开始游戏、继续游戏、游戏说明、退出游戏,通过“开始游戏”按钮进入选关界面,按下按钮选择关卡后进入相应的场景中,通过“继续游戏”可以进入之前的关卡,“游戏说明”界面是介绍游戏的操作方法,在场景中按下“返回键”返回主菜单。在各个难度场景中,进入场景前,会让玩家先选这一关的技能,每个技能在每个关卡中只能使用一次;技能的使用要花费水晶,玩家的水晶来自于场景收集或者通过关卡后的水晶奖励(过关得到的水晶量跟游戏时间成反比、跟玩家过关血量成正比)。玩家作为一名逃亡者,有着自己本身的
15、血量,各种敌人有着自己的AI,当他们没有发现目标的时候,他们会在各自的领域巡逻。每个敌人都有一个巡逻盲区,玩家可以利用这些盲区来躲避敌人。当玩家进入敌人视野内,敌人会开火攻击玩家,当玩家血量减少到小于或者等于零的时候,玩家死亡,游戏结束;场景中会有一个发光点,只要玩家安全到达这个发光点,即算胜利,游戏过关,解锁下一个关卡。3.4游戏类图 游戏类图是什么东西?图3-1游戏类图mainmenu类是游戏的界面管理类,实现游戏中界面的功能。而Loading类是游戏的加载类,使游戏能在玩家进入关卡前先加载。游戏中除了mainmenu类跟loading类2个类是单体类之外,其他类都有依赖关系。其中,Ski
16、lldate类和Emnimy类、Player类都依赖于SkillManger类,因为在SkillManger类中,要实现各种技能的作用,而技能涉及到的不仅是玩家,还有敌人,所以这2个类都跟SkillManger有依赖关系。至于Skilldate类,是用于表示每个技能的数据,所以也是依赖于SkillManger类。而SkillManger类与MoneyData类则依赖于GameControl类,游戏管理类是管理游戏的一个类,敌人的所有行为都在敌人类中完成,而玩家的大部分行为也在玩家类中完成,所以游戏管理类要做的就是及时存储游戏中产生的数据,以便以后需要的时候可以使用;还有就是管理玩家技能,在游戏
17、开始时候,记录玩家选择的技能还有初始化玩家选择的技能。3.5游戏流程图 你这个流程图不应该是在你设计的最前面吗?而且莫名其妙一张图,什么承上启下的东西也没有?这是论文, 不是数学图3-2游戏流程图3.5游戏主要功能设计 ?3.6.1开场插画现在很多游戏,特别是手机游戏都喜欢用插画来代替游戏一开始的开场动画,所以突破重围游戏中也是用插画作为游戏的开场动画。先导进一个一个UNITY的资源包叫做LeanTween,这个可以更好地实现简单动画的效果,例如平移、缩放。接着把准备做插画的若干张资源图放进同一个物体进行管理,然后给这个物体加碰撞盒,每次点击这个碰撞盒,都会移动一定的距离。具体的操作如下:定义
18、一个存放管理所有图片的空物体 Item;然后给这个Item通过UIEventListener挂钩上点击函数在点击函数里面实现的就是用LeanTween.moveLocalX移动这个物体3.6.2选关界面的效果界面主要是用NGUI里面的UIToggle组件以及Drag Scolleview,当关卡选中的情况下,通过OnTriggerEnter 改变原图的大小来实现。 3.6.3模型动画的切换模型动画根据自己的需要先切割成自己想要的动画,然后逐段给动画起个名字,代码控制部分如下:定义一个共有变量Emnimy_Animation 类型是Animation;因为需要多次用到动画的切换,所以在这里把动画
19、的切换写成一个方法,以便使用。public void SetEmnimyAnimation(动画的名字,类型是string) Emnimy_Animation.CrossFade(动画的名字); 调用这个方法的时候只要你传进一个string类型的参数,这个参数必须是某段动画的名字,模型就会自动播放相对应的动画。3.6.4敌人的AI实现 敌人的AI是该游戏的重点之一,AI的实现是用协程去完成的,具体的伪代码如下:定义一个结构体emnimy 里面包含敌人的所有状态有Think, run, Attack, Die 4种。定义4种状态的协程函数IEnumerator Attack(),IEnumera
20、tor SeeAround(),IEnumerator Move(),IEnumerator Die();public IEnumerator Attack() 改变敌人状态为Attack while (true) if(如果玩家不在攻击范围内) yield return 0; If(如果玩家没有在敌人视野内) 改变敌人状态为思考 yield return StartCoroutine(GameStart(); 播放攻击动画 设置敌人的朝向朝着玩家 玩家扣血 yield return 0; public IEnumerator SeeAround() 播放站立动画 随机一个数用来当做敌人的朝向
21、Quaternion.Slerp让敌人平缓从当前朝向转到随机方向; yield return new WaitForSeconds(2); public IEnumerator Move() 播放奔跑动画设置奔跑的方向 调用Quaternion.LookRotation(下一个节点的位置 当前位置)得到下个位置的朝向; Quaternion.Slerp让敌人平缓从当前朝向转到下个朝向;敌人移动调用transform.Translate给敌人一个速度; 状态改变为Run yield return 0; public IEnumerator Die() 播放死亡动画 调用Destroy销毁敌人 状
22、态改变为Die; yield return 0; 这4个协程的开关,都是在GameStart函数实现,具体如下:public IEnumerator GameStart () while (true) if (达到攻击条件) 关闭其他所有协程StopAllCoroutines(); yield return StartCoroutine(Attack(); if (敌人状态为Think) yield return StartCoroutine(SeeAround(); if (敌人状态为Die) yield return StartCoroutine(Die(); yield return n
23、ew WaitForSeconds(2.0f); yield return StartCoroutine(Move(); 3.6.5释放技能特效的实现技能的特效本身是用UNITY的粒子系统完成的,把特效做成一个预设体,以便多次使用。特效要在主角的身上释放,所以当需要特效的话,先Instantiate出特效,然后获取主角的位置,给特效的位置赋值,最后因为特效只是一瞬间出现,所以在产生特效的同时,就要给他加一个定时的destroy,让他产生后会自动destroy吊,节省内存。3.6.6主角的行走路线主角是按一定的路线行走,首先要把所有的拐弯点都先放置一个带有碰撞盒的空物体,把这些空物体放在一个链表
24、管理,然后给玩家一个速度,每次当玩家需要改变朝向的时候,都先去路点链表里面找下个路点,改变朝向后,下个路点在链表的位置要加一。3.6.7游戏中的碰撞检测在unity3d中,能检测碰撞发生的方式有两种,一种是利用碰撞器,另一种则是利用触发器,这两种方式的应用非常广泛。为了完整地了解这两种方式,我们必须理解以下概念:碰撞器是一群组件,它包含了很多种类,比如:Box Collider、Capsule Collider等,这些碰撞器应用的场合不同,但都必须加到GameObjecet身上。所谓触发器,只需要在检视面板中的碰撞器组件中勾选IsTrigger属性选择框。在Unity3d中,主要有以下接口函数
25、来处理这两种碰撞检测:触发信息检测:1.MonoBehaviour.OnTriggerEnter( Collider other )当进入触发器2.MonoBehaviour.OnTriggerExit( Collider other )当退出触发器3.MonoBehaviour.OnTriggerStay( Collider other )当逗留触发器碰撞信息检测:1.MonoBehaviour.OnCollisionEnter( Collision collisionInfo ) 当进入碰撞器2.MonoBehaviour.OnCollisionExit( Collision collis
26、ionInfo ) 当退出碰撞器3.MonoBehaviour.OnCollisionStay( Collision collisionInfo ) 当逗留碰撞器第4章 游戏具体实现你第三章里面不就是程序的设计吗?你游戏具体实现,最后不就是通过代码完成吗?我不明白你的逻辑,请你整理好了,让我能看懂再说。4.1程序实现 程序实现,按我理解应该是具体的程序代码吧。你下面的是不是Unity中的C#中函数的功能?如果不清楚,你真的可以参考下其他人的论文格式!4.1.1 Emnimy描述:这个是一个敌人的类,该类里面包含着敌人的所有行为,通关有限状态机去控制敌人的行为变化。类的设计图4-1 Emnimy
27、类的实现类的解析:该类主要通过有限状态机,定义敌人的所有行为,通过开协程的方式去控制敌人的状态转化,实现敌人的AI。public enum emnimy Think, run, Attack, Die敌人的移动是先定义好位置,把定义好的位置存在一个链表里面,通过读取链表里面的下一个节点进行移动。敌人的攻击状态是先判断玩家是否进入攻击范围内,UNITY自带一个函数Physics.OverlapSphere可以检测一定范围内是否有碰撞体玩家进入一定距离的攻击范围内,视野的判断是用矩阵的点乘来计算,如果玩家位置与敌人位置的点乘是正数,则说明玩家是在敌人的面前,即玩家已经进入了视野范围;如果是负数,则
28、不在视野范围内。通过以上2个办法,敌人可以自动判断出是否进行攻击。敌人的死亡则是直接调用UNITY的destroy函数。敌人的动画设置是通过UNITY自带的Animator动画系统。4.1.2 Player描述:玩家类,相对于敌人类,玩家类的设计比较简单,没有复杂的AI,也不用攻击,玩家类主要就是实现玩家的行走、人物的属性设置、包裹血量、护甲和移动速度。类的设计图4-2 Player类的实现类的解析:该类主要设计了多个接口,包括有人物血量的接口、护甲的接口、速度的接口,方便调用。玩家受伤的伤害是通过SetDamage去实现,因为游戏中有很多关卡,所以为了设计为每个关卡敌人的攻击力不同,所以在玩
29、家类里面,设计了一个方法叫GetHurt,这个方法是用来获取玩家受伤的类型,一共有3种,MG伤害是1,Rocket伤害是2, Tower伤害是4。4.1.3 GameControl描述:游戏控制类,主要是负责进入游戏界面后的一切操作。类的设计图4-3 GameControl类的实现类的解析:这个类主要是用于进入游戏后的操作,例如游戏开始时的选择技能,如果水晶不足购买技能的话,就会弹出对话框提示玩家,游戏中有游戏界面的按钮事件,可以通过委托,把按钮的处理事件挂在按钮上面。其中技能图标的产生可以用Instantiate的方法。选择技能的时候,首先定义一个链表,把全部技能都放进这个链表里面,判断是否
30、选择这个技能,则是在链表里面判断所有元素,通过判断元素本身的checkmark的透明度是不是为1来确定到底有没有选择该技能,然后再定义一个链表,用于存储选择的技能。上面说到委托,因为委托在游戏中被大量运用,并且在C#里也非常重要,所以在这里简单介绍一下委托。委托是一个可以引用方法的对象,当创建一个委托,也就创建一个引用方法的对象,进而就可以调用那个方法,即委托可以调用它所指的方法。委托的好处是拓展性强。4.1.4 Level描述:主要是负责判断游戏是否通关。如果确定游戏通关,就进行游戏的结算。类的设计图4-4 Level类的实现类的解析:在游戏中,每一关都有一个目的地,如何找到玩家是否来到目的
31、地,就要通关UNITY里面的触发器,给目的地添加触发器。该类实现的是当玩家触发触发器的时候,游戏应该处理的事件,例如出现结算界面、系统自动结算、数据的保存,OnTriggerEnter函数就是UNITY的系统触发函数。上面提到了触发器,与之对应的还有UNITY的碰撞器,二者非常相似,但还是有所不同。碰撞器碰撞的条件必须是碰撞物体有一方必须有刚体,而触发器则只需勾选碰撞盒上的Is Trigger属性就可以,而且二者调用的函数也不同。4.1.5 MainMenu描述:界面类,主要负责游戏界面的管理类的设计图4-5 MainMenu类的实现类的解析:游戏中所有UI都是用UNITY插件NGUI实现的,
32、所以该类需要实现的有游戏的音乐控制、按钮的挂钩事件,然后通过委托,让游戏中的界面的按钮实现功能。UNITY中界面一般都是用NGUI去实现,因为自带的GUI系统,效率太低,它是类似于Update函数,每一帧都要去执行的。4.1.6 Moneydate描述:数据的保存类,游戏中一般有3种数据保存方式,保存为XML文件、保存为TXT文件以及保存为永久化数据,该类中主要就是保存为永久化数据。类的设计图4-6 MoneyData类的实现类的解析这是一个单独的类,主要是保存游戏中产生的数据。在突破重围这个游戏中,主要需要保存的数据有2个:一个是当前关卡的保存,方便继续游戏的进度;另外一个是游戏中钱的保存。
33、游戏中用到的保存利用是PlayerPrefs类,把需要保存的数据保存为永久化数据。当下次进入游戏的时候,判断数据是否有保存,有就读取数据。4.1.7 SkillData描述:技能的数据类,用来辨别不同的技能,不同的技能对应的数据都是不一样的。类的设计图4-7 SkillData类的实现类的解析该类中,为了辨别不同的技能,定义了不同的ID、不同的技能花费,不同的技能有不同的执行函数,通过传ID告诉SkillManger类,实现出不同的技能。4.1.8 SkillManger描述:技能管理类,主要是负责实现各种技能以及技能的特效。游戏中一共有8个技能,每一个技能都有独自的ID。这个类的目的就是根据
34、不同的ID来显示不同的信息。技能信息如下:疾跑:提高英雄2倍的速度,持续5秒坚韧:提高英雄的护甲,减伤50%,持续5秒隐身:英雄进入隐身状态,持续3秒命运:杀死敌人任意一名守卫(系统随机选定)治疗:恢复英雄20%的血量伪装:英雄伪装成敌人的样子,(转出的点数小于7)75%的机会可以骗过守卫,持续3秒先发制人:英雄可以击杀一名距离自己最近的守卫赌博:赌博行为,不建议选择!(转出点数大于4)50%杀死一名守卫,50%减少一半血类的设计图4-8 SkillManger类的实现类的解析:这个类中,所有的技能实现都是在这个类里面:疾跑技能的实现:通过调用人物类中的设置速度的方法实现;坚韧技能的实现:通过
35、调用人物类中的设置护甲的方法实现;隐身技能的实现:通过调用人物类中的设置是否隐身的变量实现;命运技能的实现:把所有敌人都放进一个链表里面,然后随机一个数,随机到的数作为链表的下标,然后把这个元素的Isdead属性设置为true,再从链表移除这个元素;治疗技能的实现:通过调用人物类中的设置HP的方法实现;伪装技能的实现:概率问题,显示一个转盘,当转出来的数字小于6,则用人物类中的IsHide的属性实现;先发制人技能的实现:用for遍历所有敌人,计算当前所有敌人与自己的距离,然后把这一组数据放进一个链表里面,再用一个字典存储这些数据,然后对链表进行sort排序,字典中的链表下标为0的就是距离最近的
36、。然后把这个元素的Isdead属性设置为true,再从字典移除这个元素;赌博技能的实现:概率问题,显示转盘,如果转盘的数字大于4,则把敌人链表里面的一个元素移除;如果小于4,则调用人物类中的设置HP的方法实现人物血量减半的效果。第5章 结 论 小结而不是结论,你能得出什么结论?移动设备硬件的飞速发展,以及移动端游戏的开发与发展,使得手机游戏成为许多人日常生活中不可缺少的一部分,已经渐渐融入人们的生活。数字游戏技术已经从二维发展到三维,从单纯的单机游戏发展到多人在线的网络游戏。如今各式各样的手机游戏冲击着我们的视觉,而智能手机、平板电脑以及其他移动设备的普及和发展,更为手机游戏提供了新的发展机遇
37、,在这些终端上体验游戏带来的乐趣俨然已经成为了一种极具代表性的娱乐模式。本文以突破重围游戏的游戏开发为背景,探究基于Unity3D的游戏设计与实现,从游戏的设计阶段到游戏的开发阶段,一步一步慢慢深入去完成。小结应该写什么的?优缺点!参考文献1 金玺曾. Unity3D手机游戏开发. 清华大学出版社M. 2013年8月2 宣雨松. Unity3游戏开发M. 人民邮电出版社3 NGUI示例视频教学Z. 第1-3个视频. 2012年5月4 NGUI官方示例Z Scroll View讲解. 2013年11月6 洪洲,蔡木生,罗林. 计算机高级语言程序设计:C+ M. 北京:冶金工业出版社,2007致 谢感谢指导老师谭程宏老师提供的帮助,从选题到研究过程,再到最后的论文阶段,我十分感谢老师对我所产生的疑惑之处给予专业的意见和悉心的指导,正因为老师的帮助,我才得以顺利完成本次毕业设计。此外,感谢我的同学朋友们,感谢你们帮助我克服过程中遇到的一个又一个困难和疑惑,并且在制作过程中不断地提供宝贵的意见,让我在制作过程中不断产生新灵感,使得我的设计越来越完美。 30