毕业设计(论文)-基于Unity3D引擎的跨平台游戏开发.docx_第1页
毕业设计(论文)-基于Unity3D引擎的跨平台游戏开发.docx_第2页
毕业设计(论文)-基于Unity3D引擎的跨平台游戏开发.docx_第3页
毕业设计(论文)-基于Unity3D引擎的跨平台游戏开发.docx_第4页
毕业设计(论文)-基于Unity3D引擎的跨平台游戏开发.docx_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

盐城师范学院毕 业 设 计基于Unity3D引擎的跨平台游戏开发 学生姓名 学 院 信息工程学院 专 业 计算机科学与技术 班 级 12(2) 学 号 指导教师 2016年4月22日盐城师范学院毕业设计基于Unity3D引擎的跨平台游戏开发摘 要近些年,移动互联网技术的迅猛发展,使得移动终端的硬件性能得到了很大的提升。随着高性能移动智能终端的发展,移动终端设备已经成为人们日常生活中不可缺少的一部分。移动终端设备不仅给人们带来了通讯上的便利,更给人们的业余生活带来了乐趣,特别是移动互联网游戏。在这种强劲势头的推动下,众多国内外游戏厂商均做了不同程度的技术转型,纷纷将经典的端游移植到智能移动终端上,并且不断加大跨平台游戏的开发力度。Unity 3D作为一款全面整合的专业的游戏引擎,具有项目开发生命周期短,跨平台性强,引擎简单易学等特点,获得国内外界内人士的一致好评。本课题将基于Unity 3D引擎制作跨平台休闲益智游戏塔防三国。整个过程主要包括游戏策划,数据策划,游戏概要设计,详细设计,核心功能的实现以及游戏的性能优化。【关键字】跨平台,休闲益智游戏,Unity 3D全套设计加扣 3012250582A Cross Platform Game Based on Unity3D EngineAbstractRecent years, with the rapid development of mobile Internet technology, making the mobile terminal hardware performance has been greatly improved. With the development of high performance mobile intelligent terminals, mobile terminals have become an everyday part of an indispensable. The mobile terminal device not only brings convenience to the people on the communication, but also to peoples leisure life of fun, especially for the mobile Internet gaming. In this momentum, driven by many domestic and foreign game companies have done a technology transition to varying degrees, have the classical end of the tour to migrate to smart mobile devices, and the increasing cross-platform game development effortsUnity 3D as a fully integrated professional game engine with the project development life cycle is short, strong cross-platform, easy to learn and so the engine was well received in the country of outsiders.This topic will be produced based on the Unity 3D engine multi-platform casual puzzle game Tower Defense Three Kingdoms. The whole process including the game plan, data plan, game outline design, detailed design, implementation and performance of the core functions of game optimization.【Keywords】 Cross-plathform, Casual game,Unity 3D3目录1绪论11.1研究背景及意义11.2跨平台游戏发展现状21.3本课题用到的主要技术和框架21.4研究的主要内容和目录结构32Unity 3D游戏引擎概述32.1游戏引擎的介绍与比较32.1.1Cocos 2D-X42.1.2Unity 3D42.1.3Unity 3D和Cocos2D-X的比较42.2Unity 3D跨平台实现42.3Unity 3D的开发架构42.4Physx物理引擎53游戏的概要设计63.1跨平台游戏的需求分析和市场现状63.1.1策划方案63.1.2游戏的简介63.1.3游戏的玩法63.1.4游戏的系统设计73.2游戏开发环境74游戏的总体设计74.1游戏的整体模块结构84.2游戏各模块的详细设计94.2.1用户界面模块94.2.2游戏战斗模块134.2.3游戏音频模块144.2.4游戏物理模块164.3游戏模块的设计要求184.4游戏的运行流程185游戏的核心设计思路与算法应用185.1UI模块的控制195.2游戏战斗场景的设计216游戏的性能优化及测试226.1内存性能优化236.2GPU性能优化236.3CPU性能优化236.4性能优化结果247研发成果展示247.1游戏的界面展示247.2游戏的玩法展示2721 绪论随着国内科技水平的发展,移动终端设备的性能得到了很大的提升,在移动终端设备的推动下,搭载游戏的平台也越来越多。为了适应快速的科技发展,广大游戏厂商纷纷进行了技术转型,从起初所青睐的PC平台逐渐转型到IOS、Android、Window Phone、Html5、Linux等平台。平台的拓展,技术的转型,意味着广大游戏客户对游戏的需求也在不断的提高。因此游戏的跨平台性也成了众多国内外游戏厂商需要解决的首要问题。所谓跨平台性,即开发出来的游戏产品,不依赖于操作系统,不依赖于硬件,只需稍加调整即可在其他平台上正常运行,以此来缩短产品开发生命周期,达到节省游戏开发成本的效果。本课题主要研究的是Unity 3D的跨平台性,并将采用Unity 3D引擎设计并实现一款休闲益智类游戏。1.1 研究背景及意义游戏产业作为国家大力支持的文化产业,最近两年的发展速度可谓是井喷式增长,引起各界人士的关注。据相关数据统计,2014年中国移动游戏产业的规模为250亿,今年预计规模为420亿,全球游戏产业链的市场规模预计将达到2千亿。由此可见,中国游戏产业在全球游戏行业中占有相当重要的地位。随着硬件性能的提升,游戏的娱乐方式也变得五花八门,从之前的端游,逐渐移植到页游,由页游逐渐转变为手游,未来将会出现其他形式的娱乐方式,比如说VR等。在这样的行业前景的趋势,很多业内人士提出了跨平台性。所谓的跨平台性,就是软件产品不依赖于操作系统及相关的硬件设备,只需要做适当的调整,就可在多个平台上运行操作。我们熟悉的java即为一种跨平台解决方案,其提供RunTime环境作为java运行的载体,开发者并不需要关心操作系统及相关的硬件设备。本课题将从跨平台入手,研究跨平台技术的应用。Unity 3D作为一款免费的3D跨平台游戏引擎,具有简单且易于上手、跨平台性强,集成资源丰富及可扩展性强等特点。在市场占有率上,Unity也有着相当不错的表现,据Unity官方数据显示,Unity在中国的用户及安装量已达到世界第一,在世界范围内,Unity已占据同行45%的市场份额,位居全球行业排行榜第一位。在这种市场前景的驱动下,对跨平台技术进行彻底的研究,对产品的发展及性能的提升有着至关重要的作用。1.2 跨平台游戏发展现状随着科技水平的发展,移动智能终端的产品界定和种类在不断提升。智能手机、平板电脑是最早出现并迅速普及的移动智能终端,两者的市场规模均实现了跨越式的发展。随着人们对手机换代的需求逐年增加,移动应用市场也发生了翻天覆地的变化。在这庞大的应用市场中,游戏市场作为上市快,利润高的市场,尤为受广大开发者的喜爱。但是,由于人们对手机换代需求增加的影响,业内人士都在研究如何开发出一款易于移植的产品。在游戏市场日常火爆的今天,众多游戏引擎厂商为了争夺属于自己的市场,针对游戏引擎本身对游戏跨平台性做了很大的改进。在众多的游戏引擎中,较受广大游戏开发者喜欢的引擎有Unity 3D,Coocs2D-X,虚幻4等。跨平台技术不仅会给玩家带来新鲜感和方便,同时也会给游戏开发者或者运营商带来一些创意,最重要的是,他能节约团队开发的时间和成本。在这样优越的条件下,跨平台游戏也逐渐成为了国内外游戏市场的重心。受到手游市场的影响,国内以网易,盛大,腾讯为首的老一辈端游开发商也开始大力投入研发手游产品。最典型的莫过于网易的梦幻西游。梦幻西游是一款曾引无数玩家竟折腰的PC游戏,后因移动智能设备发展之迅速,慢慢的该款游戏没落。然而网易并没有放弃这么庞大的用户量,而将跨平台转换为了手游,仍取名梦幻西游。自游戏登录IOS以来,便迅速拿下了苹果中国大陆地区各个榜单第一位置,数据可谓是相当养眼。在国外的手游市场,像暴雪娱乐等王牌游戏开发商也早已踏上拓展手游市场的征程,其发布的炉石传说可谓是游戏中的标杆,据暴雪官方数据显示,到目前为止,炉石传说的用户数已经突破了3000万。1.3 本课题用到的主要技术和框架选择一款优秀的游戏开发引擎,有利于缩减游戏开发成本,提高游戏开发效率,也便于游戏开发商提高自身在行业中的地位。Unity 3D引擎正是凭借其低成本,高效率及高跨平台性等特性,从众多游戏引擎中脱颖而出,成为游戏引擎中的佼佼者,逐渐被广大游戏开发者选择。本课题采用的游戏框架为Unity 3D引擎,图片处理工具为Photoshop,编程语言为c#。1.4 研究的主要内容和目录结构产品研发的生命周期主要包括问题定义、可行性研究、需求分析、开发阶段、维护阶段。因此本课题将从游戏策划、模块设计及开发中使用的算法和编码进行研究与分析。本课题研究的相关内容及课题目录如下:分析跨平台游戏的行业背景及游戏跨平台的原理。详细描述游戏的策划方案。详细描述项目开发使用的技术及相关的算法。描述游戏优化的过程及优化技巧。第一章:从游戏市场的前景入手,分析和讨论了研究此课题的原因,并介绍论文的组织架构。第二章:简要介绍目前主流的跨平台游戏引擎,并分析其各自的优劣性及课题使用Unity 3D引擎的原因。第三章:详细描述游戏的策划方案,并对游戏的各个模块进行描述。第四章:描述游戏的整体设计,简要描述设计原理及相关的设计要求。第五章:介绍游戏的相关算法。第六章:描述游戏的性能测试过程,并对游戏的优化过程进行分析和研究。第七章:项目成果展示。2 Unity 3D游戏引擎概述随着跨平台技术的提出,市面上出现很多带有跨平台功能的游戏引擎。在众多的跨平台游戏引擎中,选用一款优秀的游戏引擎,将会达到事半功倍的效果。本章节将对市面几款比较优秀的游戏引擎进行介绍和比较,分析各自性能的优劣,并分析本课题选取Unity 3D引擎的原因及Unity 3D广阔的市场前景。22.1 游戏引擎的介绍与比较游戏行业的蓬勃发展,带动了游戏引擎的发展。市面上出现了很多优秀的跨平台游戏引擎,比如Unity 3D,Cocos 2D-X,虚幻等。随着技术水平的不断提高,引擎的性能也越来越强大,游戏的开发成本也越来越低。接下来将对Unity 3D和Cocos 2D-X进行介绍和比较。2.1.1 Cocos 2D-XCocos2d-X是基于Cocos2d for iPhone并使用C+语言实现的,其适用于IOS、Android、Windows Phone等多个平台。由于其版本小的原因,Cocos 2D-X更新迭代的速度较快。也正是版本小,所以可扩张性较差。并且Cocos2d-x的版本升级困难的问题,是众多游戏开发者的一大苦恼。2.1.2 Unity 3DUntiy是一款多平台的综合型游戏开发工具。它可以让玩家轻松创建三维视频游戏、三维人物动画、可视化建筑等类型的互动性内容。Unity是一个多方面整合的专业游戏引擎。其编辑可以在多个平台下运行,如Windows、Macos、Linux等,可发布游戏至IOS、Android、WebPlayer、WindowPhone、Linux等多个平台,真正实现游戏的跨平台性,真正实现一款不受操作系统和硬件限制的游戏。2.1.3 Unity 3D和Cocos2D-X的比较Cosos2D-X是一款纯粹的靠代码编程来实现游戏的引擎,引擎缺乏美术和策划的内容,只是纯编程技术进行的游戏,开发的游戏较为简单,较适合小型开发团队以及个人独立开发者使用。而Unity 3D作为一款可视化的3D游戏引擎,具有强大的可扩展性,该特性给创作大型游戏做了很好的铺垫。因此,Unity 3D较适合中大型成熟的开发团队使用。2.2 Unity 3D跨平台实现 虽然Unity 3D是跨平台的,但部署项目之前也需要做出部分调整。OpenGL是一款图形创建工具,其却为每个平台创建了不同的图形绘制接口,这是由于绘图展示很大程度上是由各个平台的capabilities.However决定的,由于在各个平台上渲染和输入机制上存在差异,因此,Unity项目在部署之前需要做适当的调整。2.3 Unity 3D的开发架构Unity引擎的设计师鼓励使用MVC(模型-视图-控制器)如图2-3所示:图2-3 Unity 3D游戏引擎开发架构2.4 Physx物理引擎本课题研究的游戏采用了Unity中提供的Physx物理引擎。Physx是世界三大物理运算引擎之一。PhysX可以由CPU计算,还可以调用独立的处理器(列如GPU和CPU)来计算,因此它轻松处理像流体力学物理模拟那样的大计算量的物理模拟计算。在游戏市场上,有很多物理游戏采用Physx作为物理引擎,比如QQ飞车,极品飞车13。下面将简要的介绍Physx物理引擎的一些概念。刚体(Rigidbody):游戏物体的行为由物理行为控制,该物理行为为依赖于刚体。刚体通过接受力和扭矩来模拟物体的真实移动。任何物体都需要添加刚体组件,以达到模拟受到重力的影响的效果。碰撞器(Colliders):碰撞器必须与刚体结合着使用。如果两个刚体彼此碰撞,Physx将不计算碰撞,除非两个物体都有添加了碰撞器,这样碰撞器刚体将通过彼此碰撞物理模拟。关节(Joint):关节包含Fixed Joint,Hinge Joint,Spring Joint。因为形式差不多,此处将其归为一类。物理材质(Physic Material):该材质用于调节物体的摩擦力以及控制弹力的影响。必须注意的是,该组件需和碰撞器结合使用。3 游戏的概要设计概要设计是产品制作过程的前提。游戏的概要设计决定了游戏的玩法及游戏的制作过程。游戏的概要设计包含组成模块、各模块的层次结构、每个模块之间的联系及各模块的功能介绍等。本章节将从概要设计入手,对游戏的策划、层次结构及模块的功能进行简要的介绍。33.1 游戏的需求分析和市场现状随着科技水平的不断提高,移动智能终端设备逐渐成为人们日常生活中的一部分。随着人们生活水平的改善,高性能的移动终端设备对人们而言不再是日常生活中的通信工具,更多的是一款娱乐工具,特别是在手机游戏方面。快速的生活节奏可能不会让人们花太多的时间在大型的网络游戏上,况且高端游戏的开发需要依赖高性能的移动终端。因此,本课题将从跨平台性强,轻量级、硬件配置低等角度入手,开发一款老少皆宜的休闲益智类游戏。3.1.1 策划方案塔防三国是一款以三国为题材的休闲益智类游戏。玩法简单,易于上手。本小节将对游戏的简介、玩法、模块以及系统进行简要的说明。3.1.2 游戏的简介游戏名称:塔防三国游戏类型:休闲益智类游戏简介:塔防三国是一款休闲益智游戏。游戏以三国为背景,魏蜀吴三国争霸为主题。在游戏世界里,玩家就是军师,选派任意的将领出去迎战。当攻破敌人防线即为胜利。3.1.3 游戏的玩法本课题开发的是一款休闲益智类游戏,游戏包括用户交互、音频控制、战斗控制、血量控制和物理系统等功能模块。接下来将对游戏的各个模块功能进行简要的描述:用户交互的功能:用户交互功能是整个游戏的重要组成部分。户交互功能给用户提供了一个简单明了的操作界面,以便玩家操控。音频控制功能:音频控制系统控制游戏中的背景音乐以及游戏音效的播放。游戏战斗系统:游戏战斗系统是整个游戏的核心。游戏战斗系统控制人物出生,战斗,行走,死亡等行为的执行。游戏血量控制系统:该系统由玩家血量控制系统和人物血量控制系统组成。玩家血量控制系统用于判定玩家的胜负。人物血量控制系统用于判定人物的生存或者死亡。物理系统:物理系统是游戏的关键,模拟了一个虚拟的物理世界,为游戏中的所有物体赋予了物理属性。3.1.4 游戏的系统设计本课题所研究的游戏将包含闪屏界面、菜单界面、玩家选择界面、对手选择界面、游戏操作界面、暂停界面、胜利界面,失败界面、音效控制界面。本节将对相关界面进行简要的介绍。闪屏界面:闪屏界面主要展示游戏开发商的LOGO,用于提示玩家一些制作相关的信息。菜单界面:菜单界面又称主界面,用于展示游戏的标题和一些用于交互的按钮。玩家选择界面:主要列举出三国,用于玩家选择,以确定自己的身份。敌人选择界面:主要列举出玩家以外的另外两国,用于玩家选择,以确定游戏中敌人的身份。游戏界面:主要给玩家提供游戏操作的接口。暂停界面:游戏暂停后显示的界面,提示玩家现在处于暂停状态。胜利界面:游戏胜利后显示的界面,提示玩家胜利。失败界面:游戏失败后显示的界面,提示玩家失败。3.2 游戏开发环境操作系统:Window 7游戏引擎:Unity 3D 5.0.1编程工具:Microsoft Visual Studio 2013编程语言:c#运行环境:Android 4.4,WindowsAndroid SDK:Android SDK 22.0图形软件:Adobe Photoshop CC4 游戏的总体设计软件开发的核心在于软件的总体设计阶段。模块化设计有利于缩减项目开发生命周期,利于项目的维护,因此本课题将采用模块化设计。本章将主要对游戏的整体结构,各模块的详细设计,各模块的设计要求及游戏的运行流程进行简要的分析。44.1 游戏的整体模块结构根据概要设计中提到的策划要求及玩法设计,可大致将游戏划分为以下几个模块。如图4-1所示:图4-1 结构图接下来将对游戏各模块的功能进行详细的说明。用户界面:用户界面是人机交互的重要媒介,玩家可以通过操控用户界面以达到操作游戏的效果。用户界面包括了游戏界面上的所有元素,界面跳转逻辑及界面上的动画效果的实现。物理系统:Unity集成了Physx物理系统,游戏在运行时会不实时的将物理计算的结果更新到图形的显示上。本课题游戏只需调用集成接口,检测人物之间碰撞,达到游戏战斗系统进行交互的效果。游戏战斗系统:游戏战斗系统制定了一系列战斗的规则,此战斗系统中设计了Unity 3D集成的动画系统。如当敌我双方两个人物发生了碰撞,则调用了攻击方法,执行攻击动画;若死亡,则调用死亡方法,执行死亡动画,直至渐隐;若胜利,则调用行走方法,执行行走动画。游戏血量控制系统:游戏血量控制系统由人物血量控制系统和玩家血量控制系统两部分组成。人物血量控制系统用于判断人物的生存或者死亡,该子系统与战斗系统进行交互,玩家血量控制系统用于判定玩家的胜利与失败,该子系统与战斗系统和用户界面结合使用。以下是对系统模块的概要说明,如表4-2所示。表4-2 系统模块组织表模块名模块说明用户界面模块用于管理游戏界面之间交互物理系统模块用于检测人物之间的碰撞游戏战斗系统系统的申请信息管理模块游戏血量控制系统对游戏人物及玩家的血量控制4.2 游戏各模块的详细设计4.2.1 用户界面模块用户界面模块是人机交互的一个接口,其包括游戏UI元素,UI动画及页面之间的跳转逻辑等。用户界面包括闪屏界面(FlashFrequencyInterface),菜单界面(MenuInterface),玩家选择界面(PlayerSelectInterface),敌人选择界面(EnemySelectInterface),游戏界面(GameInterface),暂停界面(PauseInterface),胜利界面(VictoryInterface)和失败界面(FailureInterface)。游戏的闪屏界面和菜单界面设计如图4-3,图4-4所示:开始游戏游戏LOGO 游戏设置 退出游戏 图4-3 闪屏界面 图4-4 菜单界面游戏的闪屏界面,该界面一般显示的游戏开发商的LOGO,由于本课题非商业化项目,因此闪屏界面为Unity 3D引擎自带的产品LOGO。游戏的主界面,在该界面中放置了开始游戏的按钮,退出游戏的按钮,音效控制的按钮。开始游戏跳转至玩家选择界面,退出游戏则直接关闭应用,音效控制按钮则跳转至音效调节界面。游戏的玩家选择界面和敌人选择界面设计如图4-5,图4-6所示:蜀魏 蜀魏吴 图4-5 玩家选择界面 图4-6 敌人选择界面游戏的玩家选择界面,界面中显示三个按钮,分别代表魏蜀吴三国,用户选择则确定了玩家的模拟身份。点击按钮,跳转至敌人选择界面。游戏的敌人选择界面,界面中显示两个按钮(除玩家以外的其他两个),例如玩家选择魏,则敌人选择界面则显示的为蜀吴。当玩家点击了某个按钮,则确定了游戏界面中敌人的身份。游戏的游戏界面和暂停界面的设计如图4-7,图4-8所示:返回继续H5555HH5H32H2H11H2H4图4-7 游戏界面 图4-8 暂停界面人物选择按钮,暂停按钮及血条分布在游戏界面中。人物选择按钮用于实例化游戏人物,实例化人物将受物理系统和动画系统的影响,执行行走,战斗,死亡等动画。暂停界面按钮用于与暂停界面的交互。血条是用于显示游戏的当前状态,决定了玩家的胜负,其与胜利界面和失败界面有着联系。游戏的暂停界面是用于显示游戏暂停的信息,暂停界面中包含退出游戏和继续游戏两个按钮控件。点击退出游戏按钮即退至游戏的主界面,点击返回游戏即回到游戏战斗显示界面继续战斗。游戏的胜利界面和游戏的失败界面设计如图4-9,图4-10所示:失败界面胜利界面返回主界面继续游戏返回主界面继续游戏图4-9 胜利界面 图4-10 失败界面游戏的胜利界面用于提示玩家胜利,游戏胜利界面包含继续游戏和返回主界面两个按钮。点击继续游戏则回到敌人选择界面,点击返回主界面则回到菜单界面。游戏的失败界面用于提示玩家失败,游戏失败界面包含继续游戏和返回主界面两个按钮。点击继续游戏则回到敌人选择界面,点击返回主界面则回到菜单界面。4.2.1.1 游戏界面实现思路 该课题采用的UI技术为UGUI,接下来将以菜单界面为例,简单介绍一下UI的制作过程。首先创建一个Image,并改名为Background,用于搭载菜单界面的背景。如图4-11所示。图4-11 菜单界面背景(Background)然后,需要对Rect Transfrom的参数进行调整,以达到UI界面自适应的效果。具体参数如图4-12所示。图4-12 RectTransform参数接着,创建3个Button组件和一个Label,将这四个组件均设为Background的子节点,这样做的目的是为了便于UI组件的控制和管理,效果图如图4-13所示。他们的作用分别为开始游戏,游戏设置和退出游戏。Label的作用是用于显示游戏的标题。具体的效果如图4-14所示。图4-13 子物体图4-14 菜单界面效果图最后创建脚本GeneralButton.cs,指定给创建的3个按钮,添加的代码如图4-15和图4-16。图4-15 开始游戏和游戏设置的脚本图4-16 退出游戏的脚本4.2.2 游戏战斗模块游戏战斗模块是整个游戏设计的核心。游戏战斗模块由游戏血量控制模块,人物战斗模块和玩家控制模块三个子模块组成。玩家控制模块是玩家对游戏操控的一个接口,该模块中包含五个按钮,五个按钮分别代表各国的五虎将。当玩家点击其中一个按钮,游戏场景中就会实例化一个人物,该人物会在物理系统和动画系统的影响下自行进行一些动作。人物战斗模块是游戏战斗的关键,这里面包含了对人物的控制及玩家血量的影响。当玩家在玩家控制系统中进行操作之后,人物战斗模块会自行创建相应的人物。创建人物之后,人物战斗系统会根据物体系统和动画系统的影响,对人物施加相应的作用力,使其执行行走,攻击和死亡等动作,并实时的更新显示在游戏界面上。游戏血量控制模块包含了人物血量控制模块和玩家血量控制模块。人物血量控制模块用于判定创建人物的死亡或者复活。玩家血量控制模块决定了玩家的胜利和失败,该模块与上一节提到的游戏失败界面和游戏胜利界面有着紧密的联系。4.2.2.1 战斗模块实现思路血量控制代码图4-17所示:图4-17 血量控制代码玩家控制模块代码如图4-18所示:图4-18 玩家控制模块代码4.2.3 游戏音频模块游戏音频模块主要功能是控制游戏中所用的音频。音频模块包括音乐模块和音效模块两个子模块。音乐模块是指游戏中连续循环播放的背景音乐,与游戏操作中的状态无关。音效模块则是通常以特定的场景或行为为触发音乐播放的条件,如果没有可以触发音效的行为则不播放。如本课题中游戏的按钮音效。4.2.3.1 游戏音频模块实现思路游戏运用到的游戏音频资源如图4-19所示:图4-19 游戏资源列表需要注意的是,音频资源需要存放在Resources目录下。这是引擎中Resources.Load()函数的要求,Load的参数为字符串,引擎会通过字符串,去工程中所有Resources目录下查找所有的与字符串相匹配的文件。具体制作思路如下:首先创建一个空物体GameObject,并将其改名为SoundManager,效果图如图4-20所示:图4-20 SoundManager组件接着,为SoundManager组件添加AudioListener和AudioSound组件,这两个组件为引擎自带脚本。AudioListener:声音接收者,用于接受场景中的声音。AudioSound:声音源,用于播放声音。最后,创建SoundManager脚本,为AudioSound指定需要播放的声音片段AudioClip。具体代码如图4-21所示:图4-21 SoundManager脚本4.2.4 游戏物理模块创建游戏物理模块的目的能够创建出一个虚拟的世界,并创建出一个或多个物理对象,并实时的将这些创建出来的组件实时的显示出来。课题中的游戏对象主要是各个英雄,也可以被称为物理精灵,这些物理精灵受物理Collider组件的影响,当Collider触发时,则会调用攻击动画,实现攻击效果。当Coliider离开时,则会调用行走动画,实现行走的效果。这些行为的执行都依赖于RigidBody组件,正是因为RigidBody组件受物理引擎的影响,才会执行出这一系列的动作。4.2.4.1 游戏物理模块实现思路接下来,将以游戏人物关羽为例,创一个人物走动的动画。首先,将美术素材进行九宫格处理。这样处理也是为了节省游戏资源,缩减游戏包包体的大小。步骤如下:第一步:将素材的Sprite Mode改为Multiple。如图4-22所示:图4-22 Sprite Mode第二步:点击Sprite Editor,进入Sprite Editor模式,对图片进行裁切。如图4-23所示:图4-23 图片裁切接着,选中裁切出来的四个片段,将其拖拽至场景中,创建一个动画片段,将创建的人物制作成预制体。并将动画取名为guanyu_move。效果如图4-24所示:图4-24 人物行走动画最后,打开Animation窗口,为Melee攻击动画创建Event,以监听动画执行事件HitEnemy,代码如图4-25所示:图4-25 HitEnemy代码打开Animator窗口,为Hero创建动画状态机,如图4-26所示:图4-26 动画状态机4.3 游戏模块的设计要求游戏开发与软件开发的要求类似,在设计的时候应该考虑后期的维护。一款游戏真正的成功并不是游戏开发的成功,而是产品成功上线之后维护工作。一款优秀的游戏,修改玩法或者添加一个新的功能都非常的简单。然而一款修改玩法或添加新功能均非常困难的游戏,则可以判定该游戏是一款失败的游戏。这些对玩家的体验来说至关重要。因此在游戏开发过程中尽量做到高内聚,低耦合,尽量做到游戏功能的模块化。4.4 游戏的运行流程运行游戏后,首先进入到闪屏界面,等待几秒钟,闪屏界面退出,出现游戏菜单界面,点击开始游戏按钮进入玩家选择界面,点击选择自己想要担任的角色,此时并进入敌人选择界面,在该界面选择游戏战斗界面的对手。点击按钮之后进入游戏界面。游戏界面中有五个按钮,这五个按钮分别代表该国的大将,点击按钮其中某个按钮则可创建出对应的人物模型。点击游戏界面右上角的暂停按钮进入暂停界面,当点击继续游戏玩家可以继续游戏;当玩家点击了退出游戏,则此轮游戏结束,并返回至主界面。在游戏结束后,若玩家胜利则显示游戏胜利界面;若玩家失败则显示游戏失败界面。在游戏胜利和失败界面均有一个返回按钮,点击按钮则可返回主界面。5 游戏的核心设计思路与算法应用塔防三国是一款休闲益智类游戏,玩家根据敌军所派遣人物的属性来安排自己的策略,根据安排的人物,进行攻击防守等行为,在游戏中,与用户交互最多的是游戏界面。根据这几个功能性的需求,需要对人物属性信息存储,血量控制及动画触发控制,本章将对游戏中用到的相关设计思路进行简要的描述。55.1 UI模块的控制手机UI一直牵动用户的心,好的UI评价可以从侧面体现出产品品牌和用户群体,也就是说UI设计的好坏,实实在在的影响了一款App产品的成败,要成为一款有竞争力的产品,界面设计是第一位。本课题研究的是一款休闲益智了游戏,游戏的界面很多,采取一种有效便捷的设计方法,能起到事半功倍的效果。UI控制的设计方案很多,本课题利用栈来对这些游戏界面进行管理。栈又名堆栈,其具有先进后出的特性。入口处被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素称为进栈,入栈或压栈,它可以把心元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素称为新的栈顶元素。游戏的UI模块控制主要流程为:加载界面,隐藏界面,返回上一个界面,返回某个指定界面等步骤。接下来将进行简要的描述。在简述UI模块之前,先对Unity 3D脚本的生命周期进行简要的阐述。Unity 3D的脚本生命周期包括Awake、Start、Update、OnEnable、OnDestroy等几个核心部分。接下来,将对其进行分析和研究。Awake:当脚本被加载时调用,在start方法之前调用,只会调用一次,该方法一般做一些初始化操作。Start:在Awake方法之后被调用,在Update方法之前调用,且只会被调用一次。Update:每一帧都会被调用,一般用于监听用户输入,动画播放。但受设备性能的影响。若设备繁忙或者性能差的时候,怎会出现卡顿的现象。OnEnable:脚本可用时被调用,如果脚本是不可用的,将不会被调用。具体的生命周期如图5-1所示:图5-1 Unity 3D生命周期游戏加载的时候,首先显示的闪频界面,闪频界面的加载是Unity控制的,开发者只需指定贴图。闪频界面之后是主界面。主界面是在脚本Awake的时候的时候调用的,此时主界面入栈。点击开始游戏,游戏界面进入玩家选择界面,此时玩家选择界面入栈。敌人选择界面和游戏界面的入栈方式类似,即游戏显示,即入栈,并栈顶元素设为False。即可实现界面入栈显示的效果。玩家点击返回按钮,栈顶元素出栈,把自身设为false,再出栈一个,将其设为true,接着玩家将栈顶元素先入栈,把true的元素设为栈顶。这样即可实现界面返回显示的效果。玩家指定某个界面进行显示,遍历整个栈,找出与指定界面匹配的界面,将其置为栈顶,栈顶元素置为false。这样即可实现显示指定界面的效果。UI控制系统-栈,如图5-2所示:图5-2 UI控制器栈5.2 游戏战斗场景的设计游戏战斗场景设计是游戏的核心,是游戏的灵魂。游戏战斗场景包含了游戏的趣味性和盈利方式等。接下来,将对游戏战斗场景的设计进行简要的描述。整个游戏中,共有15个人物模型,3个派别。因此平均下来,每个派别为5个人物模型。首先,需要对每个人物模型进行标记,即为每个模型设置一个Tag。比如说,关羽属于吴国,则关羽的Tag则为wu。模型设置Tag是为了区分类别,这也是人物模型创建的第一步,接着需要给每个人物模型添加碰撞体。碰撞体是Unity 3D引擎集成的物理引擎,前面已经介绍过。碰撞体创建完毕之后,为每个模型创建一个脚本名为Hero,该脚本包括用户名,血量,速度,攻击力等属性。添加脚本,并根据策划的需求修改相应的属性,将其保存为Prefab,则一个完整的人物模型就创建完毕。在游戏进行过程中,本课题通过射线的方式来检测碰撞。从人物模型的正前方发射一条射线,射线与碰撞体(Collider)发生碰撞后,则射线终止,并捕获碰撞体(Collider)。获得捕获的碰撞体之后,通过其Tag判断是否是友方人物模型,若为友方人物模型,则继续执行行走动画,若为敌方人物模型,则执行攻击动画。当执行攻击动画时,会调用人物脚本的Attack脚本,该脚本会进行一系列血量消耗的操作,当人物模型的血量为0或者小于0时,执行Destroy函数,将脚本销毁。当一方的人物模型会触发另一方的城池时(Collider),会调用OnColliderEnter函数,函数会执行玩家的血量消耗的操作。若此时的血量(Blood)除以总数(Amount)值为0时,则玩家败;若此时的血量(Blood)除以总数和(Amount)值为1时,则玩家胜。游戏碰撞检测代码如图5-3所示:图5-3 游戏射线碰撞检测6 游戏的性能优化及测试随着智能终端设备的日益火爆,智能终端设备厂商也层出不穷,生产出来的产品性能也存在着很大的差异。为了保证游戏能在各个平台上正常运行,我们需要对游戏本身进行适当的性能优化。本章以性能优化为研究对象,对塔防三国进行性能分析与优化。CPU、GPU及内存是影响游戏性能的三大因素,若使用恰当,则能起到事半功倍的效果,否则会事倍功半。下面将从CPU,GPU及内存入手,对游戏的性能优化进行讨论。66.1 内存性能优化Unity 3D引擎底层的图形绘制采用的是OpenGL技术,每次加载图片均需要将这张贴图读入系统内存中,当销毁图片时则需要将内存中图片全部清空,这样的执行操作是相当影响内存消耗的。在Unity 3D引擎中,有一个叫Sprite Paker的小工具,该工具用来进行贴图绘制的性能优化。Sprite Paker的工作是是将开发者的小图片资源整合合并成一个大的图集。在进入游戏的时候,将大的图集加载到内存当中。在使用Sprite Paker之前,开发者需要制定小图片的Packing Tag,Sprite Paker通过Packing Tag将其导成指定Tag的图集。在加载Sprite的时候只需从已经加载的大图集中加载,减少了CPU与GPU联系的次数,同时也节省了图片销毁的时间,降低了内存的消耗。Sprite Paker的截图如图6-1所示:图6-1 Sprite Paker工具的截图6.2 GPU性能优化Unity 3D引擎中存在一个批处理的概念,批处理就是将一些相同材质的物体进行合并,在游戏运行时,调用Open GL接口,对其一次性处理。使用批处理可以极大的提高游戏的渲染性能。在游戏中,采用相同材质的物体进行批处理,来缓解GPU渲染的压力。6.3 CPU性能优化Unity 3D引擎中,显卡在渲染一个对象之前,CPU需要计算一些着色器和灯光影响,然后向显卡驱动发送绘制指令,单物体来说,不会太影响性能,累计就会产生性能问题。接下来,我将简要列举一下本案例优化的方法。合并材质球相同的对象,进而减少绘制指令的发送。合并的方式有,手工合并或者是使用Unity内置的选项合并,或者是使用自制脚本合并模型对象,但是注意的是:非相同材质对象,合并不会对性能有任何的提高。在对象或场景中使用更少的材质。可以将独立的纹理合并成一个更大的纹理图集,但是合并时注意,合并要以方便开发,节省资源为基础。避免使用物体被渲染多次的效果,这里主要体现在(反射,阴影,像素光照等)。最后是优化代码,将重复的代码进行合并,以减少CPU性能上的消耗。6.4 性能优化结果软件测试是对性能的一种评估,性能测试结果如下图6-2所示:图6-2 性能测试结果FPS(Frames Per Second)全称为每秒传输帧数,是衡量一款游

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论