
本书分实战项目篇与开发理论篇。其中,开发理论篇,从初学者容易入门的角度分为上部分(1~14章)与下部分(15~29章)。上部分内容包括游戏历史与Unity发展概述、Unity界面与3D模型入门、Unity地形光源音频系统、脚本基础、GUI、3D模型与动画制作等;下部分内容包括3D数学、图形学、粒子系统、Mecanim动画系统、导航寻路、项目研发优化策略、游戏移植与手指触控技术、光照烘焙、UGUI等。
前言 2004年,Unity诞生于丹麦的阿姆斯特丹;2005年将总部设在了美国的旧金山,并发布了Unity 10版本。起初它只能应用于MAC平台,主要针对WEB项目和VR(虚拟现实)的开发。那时的它并不起眼,直到2008年推出Windows版本,并开始支持iOS和Wii,才逐步从众多的游戏引擎中脱颖而出,并因顺应移动游戏的潮流而变得炙手可热。2009年,Unity的注册人数已经达到了35万,荣登2009年游戏引擎的前五名。2010年,Unity开始支持Android,继续扩散影响力。其在2011年开始支持PS3和XBOX360,则可看作全平台的构建完成,截至笔者发稿,目前Unity已经支持Windows、Mac OS X、Web Browsers、iOS、Android、PlayStation 3、Xbox 360、Xbox One、Windows Store、Windows Phone、Linux、Blackberry 10、Wii U、PlayStation 4、PlayStation Vita、PlayStation Mobile、Samsung Tizen、Xbox One等几乎所有的主流平台。 如此的跨平台能力,很难让人再挑剔,尤其是支持当今最火的Web、iOS和Android平台。另据国外媒体《游戏开发者》报道:在游戏引擎里哪种功能最重要的调查中,“快速的开发时间”排在了首位,很多Unity用户认为这款工具易学易用,一个月就能基本掌握其功能。 根据Unity 官方(2014年8月)最新公布的数据,全世界有6亿玩家在玩使用Unity 引擎制作的游戏,用Unity 创造的应用和游戏目前的累计下载量达到了87亿次! Unity中国区的开发者数量、用户活跃度和终端安装量均已经成为全球第一。 Unity 引擎占据全功能游戏引擎市场45%的份额。全球用户已经超过330万人,每月活跃用户数高达60万! 惊人的详细数据如下。 1 市场份额45%居全球首位 在世界范围内,Unity占据全功能游戏引擎市场45%的份额,居全球首位。最接近Unity的竞争对手的市场份额只有其三分之一。 2 6亿玩家,87亿次下载 通过使用Unity引擎制作的游戏吸引了遍布世界各地的6亿游戏玩家。相比之下,Facebook拥有829亿的日常用户。用Unity 创造的应用和游戏目前的累计下载量达到了87亿次。 2012年,Unity正式进入中国市场,短短两年的发展,已经成就了业务量10倍的增长。无论是开发者的数量、活跃度、终端安装量,还是Unity 引擎在3D游戏市场的占有率,Unity 中国都是当之无愧的全球第一。以下是中国区Unity市场创造的3项世界第一! 1)中国注册用户数全球第一 Unity 目前的开发者注册人数已经超过330万,在2014年的4月份,中国区的开发者数量已经超越美国,成为全球第一。 2)中国活跃用户量全球第一 Unity 的每月全球活跃用户超过60万。中国区每个月Unity 编辑器被使用的次数总和高达180万次,居全球首位。美国以150万次使用居全球第二。 3)中国区3D 手机游戏市场全球第一 Unity中国区在3D手机游戏市场的占有率已经达到75%,超越日本成为世界第一。也就是说,在最畅销的前100款3D手机游戏中,平均每10款就有75款是使用Unity 引擎制作的。 本书特点 (1) 按照“案例化”教学特点,全书贯穿两个重量级游戏的开发全过程讲解,让学员从零基础开始起步,真正通过学习一本书成为游戏开发高手! (2) 书籍讲解通俗易懂,循序渐进,且对于Unity技术点讲解全面、完整、深入,可以成为读者值得长期珍藏的书籍。 (3) 本书配套下载资料包含全套PPT,以及海量教学资料,方便大专院校与国内培训机构讲师使用。 (4) 为进一步服务国内广大游戏开发爱好者,书籍附录部分提供国内游戏开发企业面试与笔试真题集锦汇总,以及游戏职位简历模板等。 (5) 书籍中配有大量教学图片,为使读者轻松阅读看清重要截图细节,一般情况下重要截图尺寸不少于页面1/4 、非核心图片占页面1/5 以上尺寸。 (6) 文字说明与代码进行明显分离,无视觉混淆。 致谢 本人从事游戏、软件与教学十多年,一直梦想可以进一步服务于全国更广大的游戏与软件从业开发人员。2014年下半年电子工业出版社的张迪编辑通过QQ找到我,诚挚邀请我,希望可以给国内Unity初学者写一本从入门到提高的Unity书籍,于是就有了这本《Unity3D/2D游戏开发从0到1》书籍的成稿。非常感谢张迪编辑的专业意见与鼓励,我才有动力花费超过半年时间去不断思索、整理、总结,一直到书籍的最后出版。 同时感谢51CTO的大霖、莉子、牟帆、范少敏等朋友在稿件校对、编写、技术支持等方面付出的辛勤汗水,感谢所有为支持本书出版而关心过问的伙伴们,最后祝电子工业出版社越办越好,为祖国IT人才的培养贡献更大的力量。 由于笔者水平有限,且书中涉及知识点较多,难免有错误疏漏之处,敬请广大读者批评指正,并提出宝贵意见。笔者邮箱:public_liuguozhu@163com,本书QQ技术讨论群:322379439(群名为“刘老师讲Unity”)。
目录 实战项目篇 项目一疯狂酷跑: 跑酷类实战项目 1 游戏背景 2 功能介绍 3 技术架构 项目二生化危机: 射击类实战项目 1 游戏背景 2 功能介绍 3 技术架构 开发理论篇上部分 第1章游戏历史与Unity发展概述 11“钱途”无限的游戏开发领域 111Unity版本快速迭代升级 112Unity 技术应用范围 113强大的跨平台性 12电子游戏发展史 13游戏引擎与Unity的发展历程 131什么是游戏引擎 132游戏引擎的功能 133为什么需要使用游戏引擎 134游戏引擎的发展 135Unity 游戏引擎的特点 136Unity游戏引擎的主要特性 137Unity 游戏引擎的发展历史 14Unity安装 141Unity 下载与安装 142Unity 的资源商店(Asset Store) 第2章Unity 界面与3D模型入门 21了解Unity编辑器界面 211掌握Unity 编辑器的布局与调整 212了解Unity 编辑器各个重要视图与作用 223D模型入门操作 2213D 模型的位移旋转与缩放 2223D模型操作快捷方式 223选择3D模型的“正”方向 224使用属性窗口进行精确调整 23开发Unity “Hello World” Unity3D/2D游戏开发零基础到精通目录24本章练习与总结 第3章3D模型基础 31Unity 编辑器进一步讲解 311Unity菜单 312项目(Project)视图 313场景(Scene)视图 314视图显示模式 315场景视图的查看与导航 32世界、局部与左手坐标系 321现实世界的“世界坐标”与“局部坐标” 322演示两种坐标的差异 323使用脚本方式演示差异 324什么是“左手坐标系” 325使用控制台(Console)窗口进行代码调试 33脚本知识入门 331键盘与鼠标输入代码 332环绕旋转 34小项目开发: 地球环绕太阳旋转 35本章练习与总结 36案例开发任务 第4章地形编辑器 41创建基本地形 411绘制贴图纹理 412制作各种地形 413种植树木与花草 42观察虚拟世界 43扩展地形编辑 44本章练习与总结 45案例开发任务 第5章光源 51概述 52光源的分类与重要参数 53典型光源场景制作 54本章练习与总结 55案例开发任务 第6章音频 61概述 62音频剪辑属性 63音频监听与音频源组件 64音频混响器与滤波器组件 65本章练习与总结 66案例开发任务 第7章Unity脚本程序基础 71Unity 脚本编辑器介绍 711什么是Net 框架 712什么是Mono 与MonoDevelop 713什么是Visual Studio 72脚本程序基础 721建立脚本的重要注意事项 722项目工程分层设计 723如何更改脚本模版 73Unity 重要脚本函数 731Unity事件函数 732Untiy重要核心类学习 733GameObject 类 734MonoBehaviour类 735Transform类 736Time类 74本章练习与总结 75案例开发任务 第8章GUI 81概述 82GUI脚本控件 83GUILayout自动布局 84帧的概念 85绘制贴图 86GUI皮肤 87本章练习与总结 88案例开发任务 第9章3D模型与动画制作 91概述 923DMax 软件基本使用 933D模型尺寸单位设置 943DMax 模型制作与导出Unity流程 95模型导出丢失贴图问题 963D文字的制作与动画 97角色Legacy 动画 98Animation 动画工具 99自定义资源包的导入与导出 910本章练习与总结 911案例开发任务 第10章物理学模拟(初级) 101概述 102刚体与碰撞体 103物理材质 104脚本控制刚体 105本章练习与总结 106案例开发任务 第11章碰撞体与触发器 111概述 112碰撞体的分类与作用 113碰撞检测事件函数 114触发检测事件函数 115本章练习与总结 116案例开发任务 第12章协程与调用函数 121协程定义与功能 122调用函数定义与功能 123协程与调用函数的区别与适用范围 124本章练习与总结 125案例开发任务 第13章数据传值技术 131概述 132SendMessage 简单传值 133SendMessage 高级传值 134本章练习与总结 135案例开发任务 第14章Unity核心类与脚本生命周期 141概述 142GameObject 核心类 143Transform核心类 144Time核心类 145MonoBehaviour核心类 146Unity脚本生命周期 1461Unity 事件函数调用顺序 1462事件函数禁用与启用规律 147Unity伪多线程揭秘 148Unity 重要应用类 149Unity 输入管理器 1410本章练习与总结 1411案例开发任务 开发理论篇下部分 第15章3D数学与3D图形学 1513D数学 1511坐标系统 1512向量 1523D图形学 153Unity 3D图形渲染 1531网格过滤器(Mesh Fillter) 1532网格渲染器(Mesh Renderer) 1533蒙皮网格渲染器(Skinned Mesh Renderer) 154贴图 1541二维贴图 1542立方体贴图(Cubemap) 1543视频贴图 1544渲染贴图 155材质 1551材质球 1552材质球属性 1553材质球分类 156着色器(Shader) 1561概述 1562基本原理:图形渲染管线 1563着色器的分类与基本结构 1564固定渲染管线着色器 1565表面着色器 157本章练习与总结 第16章物理学模拟(高级) 161铰链关节 162弹簧关节 163固定关节 164角色关节 165布料模拟 166本章练习与总结 第17章粒子系统 171概述 172基本粒子组件属性 173基本粒子系统示例 174Unity内置粒子系统包 175粒子系统的脚本调用方式 176本章练习与总结 第18章Mecanim 动画系统 181概述 182制作Mecanim 动画系统 1821步骤1:制作Avatar替身 1822步骤2:设置动画状态机(Animator Controller) 1823步骤3:设置动画循环 1824步骤4:使用代码控制角色动画 183融合术技术 184动画层与身体蒙版 185动画复用技术 186本章练习与总结 第19章导航寻路 191基本导航寻路 192斜坡与跳跃 193使用OffMeshLink 组件 194网格分层 195Nav mesh Obstacle组件 196本章练习与总结 第20章项目研发常用优化策略 201遮挡剔除(Occlusion Culling) 202层级细节(LOD) 203项目调优工具数据分析器(Profiler) 204项目优化策略 2041项目优化之Draw Call 2042项目优化之模型与图像方面 2043项目优化之光照与摄像机方面 2044项目优化之程序优化方面 2045项目优化之Unity系统设置方面 2046项目优化之良好开发与使用习惯 205本章练习与总结 第21章Unity 游戏移植与手指触控识别 211JDK 安装与环境参数配置 2111下载与安装JDK 2112设置JDK 环境 212Android 虚拟机的安装与配置 2121下载 Android SDK 2122更新环境变量 2123配置 Android SDK 的API版本 2124配置Android SDK(模拟器) 2125启动Android SDK (模拟器) 213Unity相应配置 214手指触控识别 2141手指触控API 2142手指触控常见方式 215本章练习与总结 第22章光照烘焙技术 221概述 222静态光照烘焙(Lightmapping) 223灯光探测器 (Light Probes) 224本章练习与总结 第23章UGUI界面开发技术 231概述 232UGUI基础控件 2321Canvas画布控件 2322EventSystem控件 2323Panel 控件 2324Text控件 2325Image控件 2326Button控件 2327Button事件系统 233Anchor锚点与屏幕自适应 234UGUI高级控件 2341Toggle控件 2342Slider控件 2343Scrollbar控件 2344Scroll Rect 复合控件 2345TabPage标签页面 235本章练习与总结 第24章软件重构思想 241软件重构的重要性 242项目示例 243本章练习与总结 第25章射线 251射线概述 252项目示例讲解 2521射击场景开发 2522角色寻路开发 253本章练习与总结 第26章数据持久化技术 261PlayerPrefs持久化技术 262XML持久化技术 263本章练习与总结 第27章预加载与对象缓冲池技术 271概述 272简单对象缓冲池技术 273高级对象缓冲池技术 274本章练习与总结 第28章Unity2D 281概述 282项目示例讲解 283本章练习与总结 第29章网络基础与资源动态加载技术 291网络概述 292多线程技术 2921多线程的定义 2922多线程的优先级 2923多线程的状态控制 2924多线程的线程同步 293Socket(套接字)技术 2931网络基础知识 2932Socket定义 2933面向连接的Socket 2934无连接的Socket 2935同步Socket 2936异步Socket 294网络下载WWW类 295资源动态加载AssetBundle技术 296本章练习与总结 附录A全国Unity游戏研发职位笔试面试真题集锦 A.1:算法题库集锦 A.2:C#语言基础题库集锦 A.3:Unity基础理论题库集锦 A.4:Unity实践类题库集锦 A.5:逻辑推理/智力题库集锦 附录BUnity开发常见错误与分析 附录C游戏开发职位简历模板