Unity 3D\2D手机游戏开发:从学习到产品(第3版)(txt+pdf+epub+mobi电子书下载)


发布时间:2020-08-04 18:25:36

点击下载

作者:金玺曾

出版社:清华大学出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

Unity 3D\2D手机游戏开发:从学习到产品(第3版)

Unity 3D\2D手机游戏开发:从学习到产品(第3版)试读:

前言

编写本书的目的

Unity,也称Unity 3D,是近几年非常流行的一款3D游戏开发引擎,它的特点是跨平台能力强,支持PC、Mac、Linux、网页、iOS、Android等平台,移植便捷,3D图形性能出众,同时也支持2D功能,为众多游戏开发者所喜爱。在手机平台,Unity几乎成为3D、2D游戏开发的标准工具。

游戏开发是一项复杂的工作,本书在编写过程中十分注重与实际开发相结合,全书以实例为基础,使读者在较短的时间内能快速掌握Unity的各种工具和开发技巧,并应用于实践中。

本书主要内容

本书为第3版,总体上更新了大部分代码和截图,改进了细节,确保与Unity的最新版本是一致的,下面是各章节的内容概要及与前几版的主要区别。第11~14章是全新的章节。

第1章介绍Unity编辑器的各个功能模块,与第2版相比,增加了对Unity特性的介绍,删除了很多过时的内容。

第2章是一个太空射击游戏教程,这是一个入门级的教程,从如何创建一个脚本,到一个完整的游戏有较为细致的介绍。与第2版相比,更新了UI部分,添加了使用插件创建缓存池的教程。

第3章是一个第一人称射击游戏教程,涉及人工智能寻路、动画、摄像机控制等内容。与第2版相比,更新了UI部分,修改了一些细节,与最新版Unity的功能相匹配。

第4章是一个塔防游戏教程,介绍了创建更为复杂的关卡,与前几版相比,这一章改动很大。详细地介绍了如何自定义Unity编辑器,灵活运用协程实现相对复杂的逻辑,配置和生成敌人。

第5章介绍Unity在2D游戏方面的应用,包括创建Sprite、动画的播放和一个较为完整的2D捕鱼游戏实例。与前一版相比,增加了对Sprite新特性的介绍。

第6章介绍Unity在HTTP网络通信方面的应用,还涉及PHP和MySQL的基础应用,使Unity游戏可以与Web服务器进行通信,上传下载得分记录等。与第2版相比,增加了Redis的内容,最后还简单介绍了如何在Linux上部署。

第7章是一个完整的、基于TCP/IP协议的聊天实例,介绍使用Unity创建聊天客户端,并使用.NET开发环境创建聊天服务器端。与第2版相比,本章添加了对JSON的介绍和应用示例。

第8章介绍如何将Unity游戏运行在HTML5网页上。因为Unity已经放弃了对Unity网页和Flash插件的支持,所以本章内容是全新的,同时更新了AssetBundle的部分内容。

第9章介绍如何将Unity游戏移植到iOS平台,从如何申请开发资格到测试、发布iOS游戏都有详细的介绍,与前几版相比,本章删除了大量过时的内容,重新编写了Unity与Xcode通信的代码和示例。

第10章介绍如何将Unity游戏移植到Android平台,并详细介绍了几种为Unity开发Android插件的方法。因为Google推出了全新的Android开发环境Android Studio,所以这一章改动很大,最后还添加了一个百度地图的应用实例。

第11章全面介绍Unity新GUI的大部分功能和细节,并附有大量示例,最后还介绍了DOTween Pro和EnhancedScroller两款常用插件的使用。

第12章主要是对创建Unity游戏美术资源的介绍,包括光照系统、Lightmap、PBR Shader和两足动画系统等,同时还结合了一些3D动画软件的介绍,如3ds Max和Maya。

第13章介绍行为树AI插件Behavior Designer(行为设计师),它主要应用在AI方面,无论是程序员还是游戏开发爱好者都能找到使用它的乐趣。

第14章介绍Unity社区中最有名的插件Play Maker,它和Behavior Designer都属于可视化编程产品,Behavior Designer的设计模式是基于行为树,Player Maker是基于状态机,后者有更广泛的用户群。

读者对象

本书的读者主要是游戏开发程序员和Unity爱好者,部分内容也适合游戏策划和游戏艺术家作为参考。

对于本书的完成,要特别感谢王金柱编辑给予的帮助和指导,感谢我的妻子在深夜帮助我校对书稿,还要感谢我的儿子给我莫大的精神支持。

代码下载

本书案例源代码及素材文件的下载地址:http://pan.baidu.com/s/1nvRz0Sh。若下载有问题,请发送电子邮件到booksaga@126.com,邮件主题为“Unity 3D\2D手机游戏开发从学习到产品”。金玺曾2017年8月第1章 Unity基础

本章主要介绍什么是Unity,如何安装及其基本使用,编写最简单的脚本,了解Unity的功能特点等。1.1 初识游戏引擎和Unity

随着计算机软硬件技术的发展,对游戏画面和音效的要求越来越高,开发难度也变得越来越大,一些实力雄厚的公司将自己的技术商业化,作为游戏引擎供其他开发者使用,使开发者可以很大程度地忽略底层技术的复杂性,集中精力在游戏的逻辑和设计上,从而提高生产效率。

一些比较知名的商业化游戏引擎包括Unreal、CryEngine、Quake、Source、Renderware、Game Byro、Torque Game Engine、Ogre 3D(仅是一个图形引擎)等,这些引擎都曾经非常活跃,有些也很昂贵。随着市场的变化,一些缺乏竞争力的引擎已经逐渐退出了历史舞台,有兴趣的读者可以通过网络了解一下这些引擎的历史,几乎也是一部3D游戏发展史。

Unity(也称Unity 3D)是一套包括图形、声音、物理等功能的游戏引擎,提供了一个强大的图形界面编辑器,支持大部分主流3D软件格式,对2D游戏也有全面的支持,支持C#、JavaScript等多种高级语言,使开发者无需了解底层复杂的技术,即可快速开发出高性能、高品质的游戏产品。实际上,在游戏引擎的家族中,Unity是“后起之秀”,但其发展迅速,目前已经成为世界上最活跃的游戏引擎。

在Unity的早期版本,使用Unity开发的知名游戏仅限于一些手机平台上的休闲游戏,如《Battle heart》等,随着Unity的不断升级和普及,现如今很多国内外的游戏大作都是由Unity开发的,比如《炉石传说》等。

Unity是跨平台的游戏引擎,支持包括Windows、Mac、Linux、Web、iOS、Android、Windows Phone、Xbox、Play Station等大部分主流游戏发布平台,还包括各种VR(虚拟现实)平台,如图1-1所示。图1-1 Unity支持的主流平台

在Unity早期的版本,可以将游戏导出为Flash或Unity自己的网页格式放到网页上,但随着HTML5的发展,Unity在网页游戏领域已经主要转移到Web GL平台上。笔者曾经开发的一些游戏,除了在移动平台上发布,也发布到了网页游戏平台KONGREGATE上,有兴趣的读者,可访问http://www.kongregate.com/,然后搜索游戏的英文名Wild Defense,就可以玩到笔者过去完成的一个塔防游戏,如图1-2所示。

Unity的主要开发环境是在Windows或Mac上面,因为在Windows上开发有很多优势,可以在Windows平台开发和测试,然后将游戏移植到其他平台。本书中的大部分示例是在Windows上完成的。图1-2 网页版野人大作战

在开始使用Unity之前不得不提一下Asset Store,它是Unity官方的在线商店,如图1-3所示。Asset Store里面主要出售Unity的插件或美术资源。严格来说,这并不能算是Unity的一个功能,但它确实已经成为Unity的一个重要组成部分,很多插件在Unity开发中已经是必不可少的,在本书的示例中,也将使用到很多插件和美术资源,有一部分是免费的。图1-3 Asset Store的页面截屏1.2 运行Unity

本节主要介绍如何安装和运行Unity示例工程以及安装Visual Studio,创建一个Unity工程。1.2.1 Unity的版本

Unity提供了专业版和个人版两个版本,个人版是免费的。在功能上,这两个版本在Unity5.0之后就已经没有太大区别,专业版会提供一些额外的云端服务,不过如果公司的收入超过一定额度,则必须购买专业版。对于大部分学生或个人开发者来说,选择个人版即可,使用个人版同样可以发布商业化的游戏,这一点并不受版本的限制。1.2.2 下载并安装Unity

在Unity的官方网站http://unity3d.com/get-unity中可以免费下载PC版和Mac版的Unity,这是完整的安装包,包括针对所有平台的全部功能。下载Unity后,运行安装程序,可以仅选择需要的内容安装,其中Unity的编辑器是必须安装的组件,Microsoft Visual Studio Tools for Unity是针对Visual Studio的插件,如果使用Visual Studio编写脚本,强烈建议安装这个插件。

有一点需要注意,通过Unity下载主页面链接下载的版本为Unity的“主要版本”,页面上还有一个链接可以下载“补丁版本”(Patch releases),补丁版本通常是在主要版本的基础上修复了各种Bug,在下载之前,建议阅读版本发布说明,选择适合自己的版本。1.2.3 在线激活Unity

第一次运行Unity会提示选择版本,如果没有购买过专业版,选择个人版(Personal)即可,但无论选择哪个版本,都需要注册一个Unity账号进行登录,这个账号非常有用,除了用来登录Unity,也可以用来在Asset Store中购买插件,同时还可以使用这个账号在Asset Store中销售自己开发的插件或美术素材供别人使用。1.2.4 运行示例工程

启动Unity,打开Unity的工程对话框,选择【New】新建一个工程,输入工程名称和保存路径,如图1-4所示。标准的Unity工程主要包括三部分:Assets文件夹内包括所有的工程文件,这里是主要工作的地方;Library文件夹内是工程的数据库文件(可以删除,重新打开工程后会自动重建);ProjectSettings文件夹内保存工程的配置文件。图1-4 创建新工程

启动Unity编辑器后,我们先来尝试下Unity的Asset Store,在菜单栏中选择【Window】→【Asset Store】打开Asset Store窗口,选择Unity Essentials,如图1-5所示,这里的资源都是Unity官方免费提供的,有游戏示例、教程、美术或音效等各种资源,方便我们学习和开发。在本书的教程中,也将经常使用到这里的资源。图1-5 Unity官方提供的免费资源

我们在这里选择下载Survival Shooter,如图1-6所示,这是一个射击类游戏的示例工程。图1-6 免费的射击游戏示例

下载完成后,选择Import将游戏示例导入到当前Unity工程中。在编辑器的Project窗口中浏览到Assets/_CompletedAssets/Scenes目录,双击后缀名为.unity的场景文件打开场景,然后单击编辑器上方的播放按钮,即可运行游戏,如果再次单击播放按钮则会退出游戏,如图1-7所示。图1-7 运行示例游戏

这里简单介绍一下Unity的编辑器界面,在编辑器中,开发者可以像操作3D图形软件一样设置游戏场景及编辑游戏对象,所有的游戏资源(包括模型、贴图、脚本等)都需要导入到编辑器中才能使用。Unity编辑器由很多窗口组成,每个窗口负责不同的功能,其中主要包括Hierarchy(层级)、Project(工程)、Inspector(查看)、Scene(场景)、Game(游戏)等窗口。(1)Hierarchy窗口会将当前场景中所有游戏体(Game Object)的名称罗列出来,可以通过名称选择场景中的游戏体,也可以修改游戏体的名称,Unity允许场景中的游戏体重名。(2)Project窗口是一个浏览器窗口,它按照文件夹的目录结构存放资源,选择其中任何一个资源,右击并选择【Show In Explorer】则会打开对应的Windows目录位置,Project窗口的目录结构与Windows硬盘上存放的目录结构是完全一致的,同一目录下的不同文件不能重名。(3)Inspector窗口用来显示当前选中资源或功能的详细信息。(4)Scene窗口类似于3D软件的3D视图,用来显示和编辑场景中的3D或2D游戏体,在这里最常见的操作是调整游戏体的位置、方向、缩放大小等。为了能够在Scene窗口中浏览场景,有一些改变场景视图的快捷键需要大家了解:● 按住鼠标中键平移视图。● 按住鼠标左键+Alt键旋转视图。● 按住鼠标右键+Alt键或滑动鼠标滑轮推拉视图。● 按F键可以快速锁定选中的目标。(5)Game窗口显示的是实际游戏运行的画面效果,在编辑器中运行游戏后,会自动切换到这个窗口。1.3 创建一个Hello World程序

Unity的底层是使用C++开发,但对于Unity的使用者,只允许使用脚本进行具体游戏开发,从而回避了底层的复杂性,降低了开发难度。Unity支持的脚本包括C#和JavaScript,而C#最为流行,本书的范例都是使用C#。

Unity的C#和微软.Net家族中的C#是同一个语言,对于语言本身,二者是差不多的,但Unity的C#是运行在Mono平台上,微软的C#则是运行在.Net平台上,有一些针对Windows平台的专用C#类库,可能无法在Unity中使用。1.3.1 安装Visual Studio

Unity自带了一个名为MonoDeveloper的工具,用来书写脚本。如果是在PC上开发,建议同时也安装微软Visual Studio的C#部分,可代替MonoDeveloper。

安装完成Visual Studio后,在Unity编辑器的菜单栏中选择【Edit】→【Preferences】打开设置窗口,选择【External Tools】,在External Script Editor中将外部脚本编辑器设为Visual Studio,如图1-8所示。图1-8 设置Visual Studio1.3.2 编写脚本

接下来,我们将使用Unity完成一个Hello World程序,创建一个标准的Windows可执行程序,步骤如下: 启动Unity,创建一个新的工程,在Project窗口中选择【Assets】,然后右击并选择【Create】→【C# Script】创建一个新的C#脚本,将脚本命名为Hello World,如图1-9所示。图1-9 创建新脚本 双击Hello World脚本文件将其打开,会发现里面已经被自动填充了一些基本代码。我们这里的任务是希望在屏幕上显示“Hello World”,添加代码如下: using UnityEngine; using System.Collections; // 注意脚本的类名与文件名一定要一致 public class HelloWorld : MonoBehaviour { // 在这里初始化 void Start () { } // 在这里更新逻辑(每帧) void Update () { } // 在函数OnGUI中定义UI的布局和功能 void OnGUI() { // 改变字符的大小 GUI.skin.label.fontSize = 100; // 输出文字 GUI.Label( new Rect( 10, 10, Screen.width, Screen.height ), "Hello World" ); } }

Hello World是一个类的名称,它继承自Unity的基类MonoBehaviour。

所有的Unity脚本(可以关联到游戏体的脚本)都继承自MonoBehaviour类,Unity脚本没有Main函数入口。

Unity脚本不能使用关键字new创建,因此也没有构造函数。

Start函数即是开始的意思,可以简单地把它理解为一个初始化函数;Update函数也是一个事件触发函数,它在每一帧都会被执行;OnGUI函数专门用来绘制UI界面。注意,在Unity4.6之后,已经不推荐使用OnGUI绘制UI界面。 回到Unity编辑器,在Hierarchy窗口中选择Main Camera,选中摄像机,在菜单栏中选择【Component】→【Scripts】→【Hello World】,将脚本指定给摄像机(或者直接将脚本拖动到摄像机的Inspector窗口中。

运行游戏,即可看到Hello World显示在屏幕上,如图1-10所示。图1-10 运行游戏

注意,如果是输出中文,需要将代码文件设为UTF-8格式,否则会乱码。方式是在Visual Studio的菜单栏中选择【文件】→【高级保存选项】,将编码设为“UTF-8带签名”即可。1.3.3 编译输出

下面我们需要把程序编译输出为一个标准的Windows程序。图1-11 脚本和关卡文件 在菜单栏中选择【File】→【Save Scene As】,将当前关卡保存在Asset目录内,这是一个后缀名为.unity的场景文件。可以看到,我们一共创建了两个文件:一个是脚本文件;另一个是关卡文件,如图1-11所示。图1-11 添加关卡 确定前面保存的关卡处于打开状态,在菜单栏中选择【File】→【Build Settings】,打开Build Settings窗口,如图1-12所示。选择【Add Current】将当前关卡添加到【Scenes In Build】列表框中(也可以直接将关卡文件拖入框中),只有将关卡添加到这里,它才能被集成到最后创建的游戏中。 最后还需要进行很多设置,这里我们只设置游戏的名称。在Build Settings窗口中选择【PlayerSettings】,在Inspector窗口中将Product Name设为Hello World,如图1-12所示。图1-12 设置游戏名称 在Build Settings窗口中选择【Build】,然后选择保存路径即可将程序编译成独立运行的标准Windows程序。

本节的示例文件保存在资源文件目录\c01_Hello World中。1.4 调试程序

游戏开发中出现错误是正常的,调试程序发现错误非常重要。本节将介绍调试程序的几种常用方式。1.4.1 显示Log

在Unity编辑器下方有一个Console窗口,用来显示控制台信息,如果程序出现错误,这里会用红色的字体显示出错误的位置和原因,我们也可以在程序中添加输出到控制台的代码来显示一些调试结果: Debug.Log("Hello, world");

运行程序,当执行到Debug.Log代码时,在控制台会对应显示出Hello,world信息,如图1-13所示。

如果将Debug.Log替换为Debug.LogError,控制台显示的文字将呈红色显示。

这些Log内容不仅会在Unity编辑器中出现,在游戏运行中仍然存在,如果是运行到手机上,可以通过工具实时查看,因此对于最后发布的版本要注意控制输出Log的数量。

在Console窗口的右侧选择【Open Editor Log】,会打开编辑器的Log文档,当创建出游戏后,在这个Log文档中会显示出游戏的资源分配情况,如图1-14所示。图1-13 显示调试信息图1-14 Log中保存的信息1.4.2 在Visual Studio中设置断点

在安装Unity时,如果安装了Microsoft Visual Studio Tools for Unity,即可使用Visual Studio调试Unity程序。方法很简单,首先选择代码,按F9键设置断点,然后到Visual Studio的工具栏中选择Attach to Unity and Play,如图1-15所示,Unity编辑器即会在调试状态下运行游戏。图1-15 在Visual Studio中调试Unity程序

当程序运行至断点设置位置时即会暂停,可以通过Visual Studio提供的工具查看分析程序运行状况,如图1-16所示。按F5键可以继续断点后面的程序,或者按F11、F10键执行单步调试,最后按Shift + F5组合键停止调试。图1-16 查看程序运行状况1.4.3 在MonoDevelop中设置断点

Unity自带的Mono脚本编辑器也提供了断点调试功能,使用方法如下: 使用MonoDevelop作为默认的脚本编辑器。在Project窗口中双击C#脚本打开MonoDevelop编辑器。 在代码中按F9键设置断点。 在MonoDevelop的菜单栏中选择【Run】→【Run With】→【Unity Debugger】。 在Unity编辑器中运行游戏,当运行到断点时游戏会自动暂停,这时可以在MonoDevelop中查看调试信息,如图1-17所示。按F5键可以继续断点后面的程序,所有的快捷键与Visual Studio几乎是一样的。图1-17 利用断点调试1.5 Unity脚本基础

编写Unity的脚本,无论是使用C#或Java Script,除了要注意语言自身的语法规则,还需要注意Unity开发环境的特性。1.5.1 Script(脚本)组件

在Unity中,最基础的游戏单位称为Game Object(游戏体),一个基本的Game Object仅包括一个Transform组件,能够对其进行位移、旋转和缩放,此外没有任何其他功能。每个Game Object上可以加载不同的Component(组件),这个组件可能是一个贴图,一个模型或一个脚本,当加载了不同的组件后,Game Object将根据组件的组成产生不同的功能。

为了能运行脚本,最基本的要求是将脚本指定给一个Game Object作为它的Script(脚本)组件,最简单的方式是直接将脚本拖动到Game Object的Inspector窗口的空白位置,或者在菜单栏中选择【Component】,然后选择需要的脚本。

所有的Unity运行时,脚本默认必须继承自基类MonoBehavior,如果脚本不是继承自MonoBehavior,则无法将这个脚本作为组件运行,但允许在其他脚本中调用。1.5.2 脚本的执行顺序

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载