编辑推荐
本书内容覆盖了从学习Unity 3D必知必会的基础知识,到基于着色器语言所实现的特效
随书资源中包含了书中所有案例的完整源代码,读者可以直接导入运行,帮助读者快速掌握开发技术。
书中9个综合案例,既包括单机版的游戏项目,也有网络对战游戏的项目案例;既包括2D画面呈现的游戏案例,也包括3D呈现的游戏案例
内容简介
本书作者结合多年从事游戏应用开发的经验,详细介绍了8款Unity 3D游戏案例的开发。本书主要内容包括Unity 3D的基础知识、开发环境的搭建及其运行机制,益智休闲类游戏、3D塔防类游戏、3D桌球类游戏、射击类游戏、第三人称射击类游戏、休闲体育类游戏、VR休闲竞技类游戏、多人在线角色扮演游戏的开发。本书适合有一定基础、有志于游戏开发的读者学习,也可以作为相关培训学校和大专院校相关专业的教学用书。
作者简介
吴亚峰,毕业于北京邮电大学,后留学澳大利亚卧龙岗大学取得硕士学位。1998年开始从事Java应用的开发,有10多年的Java开发与培训经验。目前主要的研究方向为OpenGL ES、Vulkan、VR/AR、手机游戏。同时为手机游戏、OpenGL ES独立软件开发工程师,现任职于华北理工大学并兼任华北理工大学以升大学生创新实验中心移动及互联网软件工作室负责人。十多年来不但多次指导学生制作手游作品获得多项学科竞赛大奖,还为数十家企业培养了上千名软件开发人员。曾编写过《OpenGL ES 3.x游戏开发(上下卷)》《Unity3D游戏开发标准教程》《Unity 5.x 3D游戏开发技术详解与典型案例》《Unity 4 3D开发实战详解》、《Android应用案例开发大全》(靠前版至第四版)、《Android游戏开发大全》(靠前版至第四版)等多本畅销技术书籍。2008年初开始关注Android平台下的3D应用开发,并开发出一系列的Android应用程序与3D游戏。
目录
- 第1章 Unity 3D基础和开发环境的搭建1
- 1.1Unity 3D基础知识概览1
- 1.1.1初识Unity 3D1
- 1.1.2Unity的诞生及其发展1
- 1.1.3Unity 3D广阔的市场前景2
- 1.1.4独具特色的Unity 3D3
- 1.2开发环境的搭建8
- 1.2.1Unity集成开发环境的安装8
- 1.2.2目标平台的SDK与Unity 3D的集成11
- 1.3本书案例的导入及运行13
- 1.4本章小结15
- 第2章 益智休闲类游戏——火车行动16
- 2.1游戏的开发背景和功能概述16
- 2.1.1游戏背景简介16
- 2.1.2游戏功能简介17
- 2.2游戏的策划和准备工作18
- 2.2.1游戏的策划18
- 2.2.2使用Unity开发游戏前的准备工作19
- 2.3游戏的架构21
- 2.3.1各个场景的简要介绍21
- 2.3.2游戏架构简介22
- 2.4主菜单场景22
- 2.4.1场景的搭建及相关设置22
- 2.4.2各对象的脚本开发及相关设置27
- 2.5游戏场景33
- 2.5.1关卡一游戏场景搭建33
- 2.5.2游戏模型设置及脚本开发37
- 2.5.3游戏UI层的开发45
- 2.5.4关卡二游戏场景搭建48
- 2.6游戏的优化与改进50
- 2.7本章小结50
- 第3章3D塔防类游戏——BN塔防51
- 3.1游戏的开发背景和功能概述51
- 3.1.1游戏背景简介51
- 3.1.2游戏功能简介52
- 3.2游戏的策划和准备工作54
- 3.2.1游戏的策划54
- 3.2.2使用Unity开发游戏前的准备工作55
- 3.3游戏的架构58
- 3.3.1各个场景简介59
- 3.3.2游戏架构简介59
- 3.4玩家设置场景的开发61
- 3.4.1场景的搭建及其相关设置61
- 3.4.2各对象的脚本开发及其相关设置64
- 3.5游戏功能场景的开发69
- 3.5.1场景搭建及其相关设置70
- 3.5.2各对象的脚本开发及相关设置71
- 3.6属性介绍场景的开发74
- 3.6.1英雄属性介绍界面搭建74
- 3.6.2怪物属性介绍界面搭建75
- 3.6.3英雄以及怪物模型创建76
- 3.6.4各对象的脚本开发及相关设置77
- 3.7选关场景的开发81
- 3.7.1场景的搭建及其相关设置81
- 3.7.2各对象的脚本开发及相关设置82
- 3.8关卡场景的开发83
- 3.8.1场景地形的制作83
- 3.8.2摄像机的移动和缩放功能的开发85
- 3.8.3敌人相关功能的开发87
- 3.8.4防御塔功能的开发93
- 3.8.5英雄相关功能的开发96
- 3.8.6技能的开发99
- 3.8.7创建声音管理器100
- 3.8.8场景UI的制作与相关脚本的开发101
- 3.8.9创建游戏控制器104
- 3.9游戏的优化与改进106
- 第4章3D极品桌球107
- 4.1游戏背景和功能概述107
- 4.1.1游戏背景简介107
- 4.1.2游戏功能简介107
- 4.2游戏的策划和准备工作110
- 4.2.1游戏的策划110
- 4.2.2使用Unity开发游戏前的准备工作110
- 4.3游戏的架构112
- 4.3.1各个场景简介112
- 4.3.2游戏框架简介113
- 4.4主菜单界面114
- 4.4.1项目的基本创建114
- 4.4.2脚本的编写与挂载115
- 4.5游戏界面128
- 4.5.1场景的搭建128
- 4.5.2多视角的制作与切换131
- 4.5.3游戏界面脚本的编写134
- 4.5.4功能脚本的编写141
- 4.6游戏的优化与改进154
- 第5章射击类游戏——固守阵线155
- 5.1游戏背景和功能概述155
- 5.1.1游戏背景简介155
- 5.1.2游戏功能简介155
- 5.2游戏的策划及准备工作158
- 5.2.1游戏的策划158
- 5.2.2使用Unity开发游戏前的准备工作159
- 5.3游戏的架构161
- 5.3.1各个场景简介161
- 5.3.2游戏架构简介162
- 5.4主菜单场景162
- 5.4.1场景搭建163
- 5.4.2主摄像机设置及脚本开发164
- 5.4.3主菜单场景中各个界面移动的实现170
- 5.5游戏场景171
- 5.5.1场景搭建171
- 5.5.2主摄像机设置及脚本开发172
- 5.5.3操作界面的创建173
- 5.5.4子弹的创建177
- 5.5.5敌人小兵的创建及脚本开发179
- 5.5.6场景中结点的设置与脚本开发181
- 5.5.7敌人装甲车的创建与脚本开发182
- 5.5.8敌人坦克的创建与脚本开发186
- 5.5.9小地图的制作188
- 5.6游戏的优化与改进189
- 第6章第三人称射击类游戏——海岛危机190
- 6.1游戏背景和功能概述190
- 6.1.1游戏背景简介190
- 6.1.2游戏功能简介191
- 6.2游戏的策划及准备工作193
- 6.2.1游戏的策划193
- 6.2.2使用Unity开发游戏前的准备工作194
- 6.3游戏的架构197
- 6.3.1各个场景简介197
- 6.3.2游戏架构简介198
- 6.4闪屏和主菜单场景200
- 6.4.1闪屏场景的搭建与脚本开发200
- 6.4.2常量类与简单游戏保存功能的开发203
- 6.4.3主菜单场景基本UI的搭建与脚本开发204
- 6.4.4选择关卡界面的搭建与脚本开发207
- 6.4.5信息提示界面的搭建与脚本开发211
- 6.4.6其他部分的搭建212
- 6.5游戏加载场景214
- 6.5.1场景搭建214
- 6.5.2异步加载场景功能的实现与脚本开发214
- 6.6关卡一游戏场景215
- 6.6.1场景搭建215
- 6.6.2主人物模型的搭建及脚本开发216
- 6.6.3虚拟摇杆和摄像机跟随功能及脚本开发221
- 6.6.4游戏提示界面的搭建及脚本开发225
- 6.6.5任务系统和触发器的搭建及脚本开发226
- 6.6.6准星和准星提示信息的搭建及脚本开发228
- 6.6.7邮件界面的搭建及其功能的脚本开发230
- 6.7其他游戏场景232
- 6.7.1游戏CG功能的实现及脚本开发232
- 6.7.2血条和小地图功能及脚本开发233
- 6.7.3怪物的创建及脚本开发236
- 6.7.4船和直升飞机的搭建及脚本开发239
- 6.8游戏的优化与改进241
- 第7章休闲体育类游戏——指尖网球243
- 7.1游戏背景和功能概述243
- 7.1.1游戏背景简介243
- 7.1.2游戏功能简介244
- 7.2游戏的策划及准备工作245
- 7.2.1游戏的策划245
- 7.2.2使用Unity开发游戏前的准备工作246
- 7.3游戏的架构248
- 7.3.1各个场景简介248
- 7.3.2游戏架构简介249
- 7.4主菜单场景250
- 7.4.1场景的搭建及其相关设置250
- 7.4.2各对象的脚本开发及相关设置254
- 7.5单人模式游戏场景264
- 7.5.1场景搭建264
- 7.5.2各对象的脚本开发及相关设置265
- 7.6网络模式游戏场景283
- 7.6.1场景搭建283
- 7.6.2各对象的脚本开发及相关设置283
- 7.7服务器端的开发288
- 7.7.1网络游戏架构简介288
- 7.7.2服务器端简介289
- 7.7.3服务器端的开发289
- 7.8游戏加载场景290
- 7.8.1场景搭建290
- 7.8.2各对象的脚本开发及相关设置291
- 7.9游戏的优化与改进292
- 第8章VR休闲竞技类游戏——Q赛车293
- 8.1游戏背景和功能概述293
- 8.1.1游戏背景简介293
- 8.1.2游戏功能简介293
- 8.2游戏的策划及准备工作295
- 8.2.1游戏的策划295
- 8.2.2使用Unity开发游戏前的准备工作296
- 8.3游戏的架构297
- 8.3.1各个场景的简介297
- 8.3.2游戏架构简介297
- 8.4主菜单场景298
- 8.4.1场景的搭建及其相关设置298
- 8.4.2Gvr Unity SDK下载及使用介绍300
- 8.4.3脚本开发及相关设置302
- 8.5单人模式游戏场景305
- 8.5.1场景搭建305
- 8.5.2游戏场景的初始化脚本307
- 8.5.3赛车控制脚本及其相关设置308
- 8.5.4摄像机控制及暂停脚本开发309
- 8.5.5游戏输赢脚本开发311
- 8.5.6游戏UI对象脚本开发314
- 8.5.7游戏常量类脚本开发314
- 8.6网络模式游戏场景315
- 8.6.1场景搭建315
- 8.6.2脚本开发及相关设置315
- 8.7服务器端的开发319
- 8.7.1网络游戏架构简介319
- 8.7.2服务器端简介320
- 8.7.3服务器端的开发320
- 8.8游戏的优化与改进322
- 第9章多人在线角色扮演游戏——英雄传说323
- 9.1游戏背景和功能概述323
- 9.1.1游戏背景简介323
- 9.1.2游戏功能简介323
- 9.2游戏的策划及准备工作326
- 9.2.1游戏的策划326
- 9.2.2游戏前的准备工作327
- 9.3游戏的架构333
- 9.4网络游戏服务器概述334
- 9.4.1什么是游戏服务器334
- 9.4.2服务器结构334
- 9.4.3序列化协议简介335
- 9.4.4Protocol Buffer的使用336
- 9.4.5游戏服务器的整体架构338
- 9.5游戏服务器线程类详解338
- 9.5.1服务器主线程类——ServerThread339
- 9.5.2服务器代理线程类——ServerAgentThread339
- 9.5.3操作码处理类——OPCodeHandler343
- 9.5.4登录和选人线程类——LogInThread和ChooseRoleThread344
- 9.5.5游戏主场景线程类——MainMapThread345
- 9.5.6副本线程类——DungeonMapThread347
- 9.6游戏服务器动作类详解351
- 9.6.1所有动作的父类——Action352
- 9.6.2登录动作类——LogInAction352
- 9.6.3创建角色动作类——CreateRoleAction353
- 9.6.4选择角色动作类——ChooseRoleResultAction354
- 9.6.5更新角色信息动作类——UpdateRoleDataAction355
- 9.6.6返回主城动作类——BackTOMainMapAction356
- 9.6.7同步动画动作类——BroadCastStateAction357
- 9.6.8创建副本动作类——CreateDungeonAction357
- 9.7登录场景及加载场景的搭建358
- 9.7.1登录场景的搭建及相关设置359
- 9.7.2加载界面场景的搭建366
- 9.8客户端与服务器的连接367
- 9.9选人场景的搭建373
- 9.9.1选人3D场景的搭建373
- 9.9.2UI的开发378
- 9.10主城场景的搭建开发384
- 9.10.1主城中角色移动及NPC功能的开发384
- 9.10.2主城场景UI的开发389
- 9.10.3组队功能的实现392
- 9.11副本场景功能的开发393
- 9.12自动寻路系统396
- 9.12.1地图信息标记点397
- 9.12.2自动寻路代码399
- 9.12.3Java与Lua的交互403
- 9.13游戏AI开发406
- 9.13.1服务器端AI开发406
- 9.13.2客户端AI开发412
- 9.14游戏的优化与改进418
- 9.15本章小结418