下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922
读书 > 游戏开发 >Unity3D > Unity 4 3D游戏开发入门经典 第2版- 多平台游戏开发全攻略 游戏开发经典丛书

Unity 4 3D游戏开发入门经典 第2版- 多平台游戏开发全攻略 游戏开发经典丛书

综合评级:★★★★★

定价:98.00

作者:(美) 布莱克曼(Blackman,S.) 著

出版社:清华大学出版社

出版日期:2015年2月

页数:672

字数:1130

ISBN:9787302387411

书籍介绍

《Unity 4 3D游戏开发入门经典(第2版):多平台游戏开发全攻略》非常适合那些渴望掌握Unity编程的读者。你可能是熟知3D工具(例如3ds Max、Maya或Cinema 4D)的艺术家,或者你可能熟悉2D工具(例如Photoshop和Illustrator)领域。另一方面,你可能只是想熟悉游戏编程以及游戏制作的最新理念。

本书以艺术家容易接受的方式介绍了关键的游戏制作概念,并快速讲授了需要在Unity中掌握的基本编程技能。接着本书向你展示了作为一个独立的游戏艺术家,如何在当今的休闲和移动市场范围内创建理想的交互类游戏,同时本书也在游戏逻辑和设计方面为你提供了坚实的基础。

◆ 本书的第一部分解释了游戏交互所包含的逻辑,并很快通过简单的示例来让你创建游戏资源,这些示例你可以自己构建并逐步扩展。

◆ 第二部分将构建一个点击式第一人称冒险游戏的基础——包括可以重用的状态管理脚本,用于角色交互的对话树,加载和存储功能,一个健壮的装备包系统和一个奖励机制:一个动态配置的迷宫和小型地图。

◆ 借助于所提供的2D和3D内容,你将学会评估和处理项目进度中来自基于字节大小的片段的挑战,从而获得在交互设计方面解决问题的技能。

在本书的结尾,你将能够灵活使用Unity 3D游戏引擎,并了解利用自己的资源的必要流程。也将拥有可重用的脚本和艺术资源,从而利用它们来创建新的游戏。

相关课程
目录

第1章 游戏开发简介 1

1.1 冒险游戏类型 1

1.1.1 文字冒险游戏 1

1.1.2 图形冒险游戏 2

1.1.3 实时3D冒险游戏 3

1.2 设计你的游戏 6

1.2.1 定义风格 7

1.2.2 划分场景 8

1.2.3 第一人称还是第三人称 9

1.2.4 动画 9

1.2.5 内容 9

1.3 管理项目 10

1.3.1 多角色 10

1.3.2 选择游戏引擎 11

1.3.3 需求 11

1.3.4 完成第一个游戏的提示 12

1.4 实时渲染相对于预渲染的新概念 14

1.5 本章小结 19

第2章 unity UI基础——入门 21

2.1 安装和启动Unity 21

2.2 加载或创建一个新项目或场景 21

2.3 布局 24

2.3.1 Scene视图 25

2.3.2 Game窗口 25

2.3.3 Hierarchy视图 26

2.3.4 Project视图 26

2.3.5 Inspector视图 27

2.4 工具栏 27

2.5 菜单 28

2.5.1 File菜单 28

2.5.2 Edit菜单 28

2.5.3 Assets菜单 29

2.5.4 GameObject 30

2.5.5 Component菜单 30

2.5.6 window菜单 30

2.5.7 Help菜单 30

2.6 创建简单的对象 30

2.7 选择和聚焦 35

2.8 变换对象 35

2.9 捕捉 37

2.10 场景手柄工具 39

2.11 灯光 41

2.12 3D对象 46

2.12.1 网格 46

2.12.2 网格的子对象 46

2.12.3 贴图 47

2.13 材质 50

2.14 本章小结 51

第3章 脚本:通过实践学习 53

3.1 什么是脚本 53

3.2 脚本的成分 54

3.2.1 函数 54

3.2.2 变量 60

3.2.3 在游戏中拾取对象 64

3.3 条件和状态 68

3.4 运算顺序 70

3.5 本章小结 70

第4章 地形生成:创建一个测试环境 73

4.1 创建环境 73

4.1.1 创建一个地形对象 74

4.1.2 场景漫游导航 77

4.2 Terrain Engine 77

4.2.1 地形结构 78

4.2.2 绘制纹理 81

4.2.3 树木 84

4.2.4 地形的细节对象 100

4.2.5 创建你自己的地形资源 104

4.2.6 Terrain Settings 107

4.3 阴影 108

4.4 雾效 112

4.5 本章小结 113

第5章 导航和功能 115

5.1 导航 115

5.1.1 方向键导航和输入 121

5.1.2 玩转平台 132

5.1.3 碰撞墙 139

5.1.4 首次编译 150

5.2 本章小结 154

第6章 光标控制 157

6.1 光标可视化 157

6.2 自定义光标 159

6.3 GUI纹理光标 160

6.3.1 Texture Importer 161

6.3.2 色卡 168

6.3.3 光标位置 168

6.4 硬件光标 169

6.5 UnityGUI光标 170

6.6 对象与对象的通信 173

6.7 鼠标悬停光标更改 174

6.8 快速发布 182

6.9 对象对鼠标悬停的反应 183

6.10 本章小结 183

第7章 导入的资源 185

7.1 3D艺术资源 185

7.2 导入设置 189

7.2.1 导入设置:Model 189

7.2.2 导入设置:Rig 194

7.2.3 父对象 196

7.2.4 导入设置:Animations 198

7.3 设置材质 204

7.3.1 钥匙 204

7.3.2 箱子 208

7.3.3 鲜花 210

7.4 阴影 212

7.5 本章小结 216

第8章 动作对象 217

8.1 碰撞器 217

8.2 触发动画 221

8.3 添加声音特效 224

8.4 设置一个双状态动画 229

8.5 使用Unity的动画视图 231

8.6 触发另一个对象的动画 244

8.7 局限性 246

8.8 本章小结 246

第9章 管理状态 249

9.1 识别动作对象 249

9.1.1 测试情节介绍 250

9.1.2 排练 250

9.1.3 动作对象 251

9.1.4 替身 251

9.2 开发一个状态机 251

9.2.1 状态机的组件 251

9.2.2 选取事件 252

9.2.3 分离状态元数据和转变动作 253

9.2.4 定义状态和转变 254

9.2.5 可视化转变 254

9.2.6 组织信息 256

9.3 查找表 257

9.3.1 评估结果 259

9.3.2 解析字符串 259

9.3.3 游戏笔记 260

9.4 ObjectLookup脚本 261

9.5 动作相关的消息 268

9.6 对象元数据 270

9.6.1 状态相关的元数据 270

9.6.2 处理选取事件 273

9.6.3 添加元数据 275

9.6.4 激活状态引擎 277

9.6.5 优化选取 284

9.6.6 隐藏光标 285

9.6.7 创建定时器 285

9.7 本章小结 286

第10章 探索转变 289

10.1 处理辅助对象 289

10.2 处理对象的可见性 292

10.2.1 使用标签 292

10.2.2 可见性 296

10.2.3 处理不透明度变化 298

10.2.4 开发非关键帧渐变 301

10.2.5 完成可见性变化 303

10.3 处理特殊情况 307

10.4 确保获得玩家焦点 312

10.4.1 阻断玩家输入 312

10.4.2 引导玩家焦点 314

10.4.3 探索Lerp 314

10.4.4 摄像机匹配元数据 320

10.4.5 改善摄像机匹配 322

10.5 本章小结 328

第11章 物理和特效 329

11.1 添加新资源 329

11.2 物理 333

11.3 结合物理和关键帧动画 336

11.3.1 布料 336

11.3.2 落石 344

11.3.3 引入随机性 347

11.3.4 找到水晶 350

11.4 粒子系统 352

11.4.1 Shuriken基础 354

11.4.2 粒子类型 354

11.4.3 倾泻粒子 357

11.4.4 粒子组 361

11.5 其他特效 369

11.5.1 创建激光柱 369

11.5.2 建造激光设备 370

11.5.3 激活激光 371

11.5.4 创建UV动画脚本 373

11.5.5 应用UV动画脚本 374

11.6 本章小结 378

第12章 信息文本 379

12.1 GUI Skin 379

12.2 文本可见性 388

12.3 使用对象元数据 392

12.3.1 调整文本 394

12.3.2 激活动作消息 397

12.3.3 最后的优化 404

12.4 本章小结 405

第13章 装备包逻辑 407

13.1 使用层 407

13.2 创建装备包屏幕 411

13.3 添加装备包图标 417

13.3.1 2D对象控制 421

13.3.2 基于光标的响应 426

13.4 在3D场景中删除光标 427

13.5 本章小结 430

第14章 管理装备包 431

14.1 管理装备包对象 431

14.2 装备包布局 441

14.3 装备包溢出 444

14.4 设置限制 448

14.4.1 装备包网格限制 449

14.4.2 箭头限制 452

14.5 从装备包添加和移除对象 454

14.5.1 移除装备包对象 454

14.5.2 将对象添加到装备包 456

14.5.3 组合条目 457

14.5.4 错误的拾取 460

14.5.5 再次访问动作对象 463

14.6 本章小结 464

第15章 对话树 465

15.1 游戏剧情 465

15.2 开始一个对话 466

15.2.1 筛选话题 469

15.2.2 获得回答 470

15.2.3 分支对话 478

15.3 本章小结 492

第16章 Mecanim和角色 493

16.1 添加角色 493

16.1.1 导入角色 493

16.1.2 设置替身 495

16.1.3 定义动画剪辑 498

16.2 控制角色 501

16.2.1 Animator Controller 501

16.2.2 作一些改变 503

16.2.3 转变 503

16.2.4 脚本化动作 507

16.2.5 混合树 509

16.2.6 图层和图层遮罩 512

16.2.7 物理特性 514

16.3 NPC控制器 516

16.3.1 调整游戏 517

16.3.2 同步音频和动画状态 519

16.4 组合角色和对话 522

16.5 与Dialogue Manager进行通信 535

16.6 打包测试场景 537

16.6.1 准备ObjectLookup 537

16.6.2 向游戏中添加NPC 538

16.7 本章小结 541

第17章 游戏环境 543

17.1 添加最后的资源 543

17.1.1 准备新的资源 543

17.1.2 重论材质和光照贴图 545

17.1.3 在Beast中使用导入的光照贴图 550

17.1.4 进入神庙的低层平台 551

17.2 设置神龛 558

17.2.1 保持水神殿湿润 559

17.2.2 照亮光神龛 560

17.3 设置迷宫 560

17.3.1 检查迷宫几何体 561

17.3.2 管理迷宫功能 561

17.3.3 检查落点访问 563

17.3.4 调整几率 570

17.3.5 创建一个“复活节彩蛋” 575

17.4 本章小结 576

第18章 建立游戏 579

18.1 完成主关卡 579

18.1.1 阅读材料 579

18.1.2 找到Golden Sleeve 584

18.1.3 搭乘木筏 586

18.1.4 定位水晶 590

18.1.5 进入神庙 591

18.1.6 遇见Gimbok 596

18.1.7 遇见Kahmi 602

18.1.8 隧道地图 606

18.1.9 获取光源 608

18.1.10 隧道 610

18.2 终极关卡 615

18.3 本章小结 617

第19章 菜单与关卡 619

19.1 游戏菜单 619

19.1.1 MenuManager脚本 619

19.1.2 主菜单 622

19.1.3 确认对话框 629

19.1.4 制作人员 632

19.1.5 追踪菜单模式 633

19.1.6 暂停导航和场景交互 634

19.2 音频 636

19.2.1 声音特效 636

19.2.2 环境声音 637

19.2.3 音乐 637

19.2.4 声音音量 638

19.2.5 最终关卡菜单 638

19.3 关卡保存与加载 639

19.3.1 用PlayerPrefs存储 639

19.3.2 保存到文本文件 640

19.3.3 保存游戏数据 642

19.3.4 加载保存的数据 645

19.4 在关卡之间漫游 651

19.5 开始菜单 652

19.6 最终任务 653

19.7 本章小结 655

前言

0.1 为什么写这本书

实时3D游戏已经出现10年多了。我们都玩这类游戏,按自己的喜好为这类游戏创作相关资源,甚至可能Mod(游戏模组,指通过修改游戏原作创建新游戏——译者注)其中的一些。然而,Unity游戏引擎突破性地提供了一种免费的或者是低成本的桌面游戏、手机游戏和单机游戏创作方式,创作你自己的游戏的唯一障碍是你的决心以及你愿意或能够投入到游戏创作中的时间。

时代变了。3D技术已经普及,在影视领域我们可以看到很多以计算机图形(Computer Graphics,CG)为特色的公司,在游戏业界也是一样,很多休闲游戏正从2D转向3D。Unity迈出了大胆的一步,通过提供免费、强大的引擎,改变了高端引擎的价格模式,推动了业界的发展。引擎的价格不再是将你的创意变成游戏原型甚至是产品的障碍。

无论你的兴趣是休闲游戏还是其他更高的目标,如果你之前没有脚本经验,但是又很想把你的艺术创作资源和故事变成游戏,本书都能帮助你实现愿望。在现代的游戏引擎中,繁重的程序由引擎自己控制,而逻辑和游戏玩法(指游戏的目标、规则、挑战、交互等设定——译者注)可以由那些在创意方面比在程序方面更具特长的人通过脚本实现。

在本书中,我将从3D艺术家的角度来探讨游戏创作和设计决策,将逻辑和脚本分散在各个小的部分,同时向艺术家、初级游戏设计人员以及编程新手介绍实时游戏引擎概念。

本书以项目导向的方式撰写,所以你最终不但可以完成一个可以赏玩的游戏,并且能够获得一些可以复用到其他游戏中的脚本资源。同时,你也会体验到典型的设计决策,这些决策在整个游戏设计过程中都不得不完成。你将从创建游戏的基础开始,通过增加功能,不断地优化它;在这个过程中,我将会解释特定选择背后的逻辑以及实时游戏的相关概念。

本书的项目基于第一人称点击式冒险游戏,功能包括装备包、状态管理、载入/保存功能,特别强调游戏创作中的视觉要素。即使你不单是第一人称射击游戏的爱好者,你也能学到如何通过引入娱乐性的和有趣的人物和功能,来优化你偏爱的游戏。

本书项目旨在向你介绍一种符合逻辑的设计决策和问题解决过程,这个过程对冒险游戏之外的其他游戏设计也有助益。它为创建并(更重要的是)最终完成你的游戏提供了一个框架和方法。本章内容的介绍将超出基本的Unity功能和标准资源(Unity引擎自带的标准资源包,含游戏设计常用的基本功能和素材——译者注)的使用,还会介绍一些在在线教程和其他书籍里很少讨论的内容。项目需要的所有艺术资源都已提供。

作者的话

几年以前,在带领我的班级完成一个竞速游戏、一个第一人称的射击游戏和一个平台跳跃游戏之后,我决定最后一个小项目是经典的冒险游戏。令我惊讶的是班里的同学被这个游戏的设计决策和逻辑所激发的热情。因为在当时没有这类游戏的现成教程,我们不得不从头设计游戏,从之前的项目中借鉴代码,创建自己的脚本,从Unity社区汲取大量的知识。这本书的创作就源于那段经历,既是为了需要,也是为了与他人分享探索的过程。

0.2 现代冒险游戏

在这个项目中,你将要创建一个经典的第一人称点击式冒险游戏的变种。冒险游戏有很多变种,对于没有或者只有很少脚本经验的艺术家或一般爱好者来说,这是一个很好的起点。故事、艺术资源、动画是这类游戏的主要组成部分,较慢的节奏允许更多的脚本优化方法,因为争分夺秒的响应时间是不需要的。如果你的目标是创建第一人称射击类游戏,本书可能不适合你。相反,如果你的口味特别一些,你也许会找到各种各样的信息,它们都可以用到你当前正在创作的游戏类型中。

在Unity 4.0中,加入了Mecanim,它提供了理想的方法,用来实现探险游戏的一个常规特性——角色和对话树。即使你并非角色动画专家,也能够这样做,这非常有趣。更重要的改进在于更好地结合了物理特性以及各种特殊效果,使得本版书籍中的项目从“经典的”变成了“现代的”。

冒险游戏的一个最有意思的部分是可以搜集和使用奇怪的对象组合。因为装备包和状态管理的重要性,有几章专门介绍它们的设计和实现。Unity游戏开发新手经常在社区论坛提问如何实现这些特性,但是他们很少得到回答,因为话题涉及的范围超出了Unity本身。在本书的末尾,你将获得额外的一些脚本、概念和经验,它们能够使你将学到的知识应用到其他类型的游戏中。

交互冒险游戏对于独立开发人员也非常理想,因为这类游戏吸引了大批玩家。FireProof Games的The Room游戏在本年度手机游戏排行中名列前茅,它是使用Unity开发的,这说明Unity已经在休闲游戏和手机游戏社区中占有重要的地位。

0.3 关于Unity游戏引擎

Unity是小型工作室、独立游戏开发人员和那些希望开发自己游戏的开发人员的理想选择。它有广泛的用户群(在2013年夏季大约有120万左右)和特别活跃的用户社区,使得从新手到资深高手都能够及时地获得答案和分享信息。

Unity是游戏开发的一个很好的切入点,它在价格与特性和功能间获得平衡。免费版的Unity允许人们在付出辛苦赚来的资金前试验、测试、开发和销售游戏。Unity很便宜,功能齐备的Pro版是免版税的,允许人们以非常低的附加成本制作和销售游戏,这对休闲游戏市场非常重要。

多平台游戏市场——特别是iPhone和Android休闲游戏——在当前是非常流行的,Unity的跨平台能力已经经过充分证明。最早基于Mac系统创作的应用程序可以发布到Mac和Windows,2009年Unity发布了Windows版,正如期望的那样,它为Windows平台的开发人员和艺术家提供了机会。从那时开始,Unity开始不断地增加对iPhone、Android、iPad和Wii的支持,并开始为支持Xbox 360和PS3进行开发。在2013年春季,Unity推出了更大的惊喜:对于Unity的免费用户,iOS、Android、Windows 8 Mobile和Blackberry的许可证现在或者很快也将免费。

最早的Unity引擎适配器试图从Flash或者Director进行迁移,这可以使得脚本环境更容易应用。毕竟很多Unity用户都有用Flash制作游戏并使用ActionScript的背景,这无论如何是一个先决条件。有很多关于在Unity中创建游戏的资料,包括第一人称射击游戏、竞速游戏、平台跳跃游戏等。即使你的兴趣在别的地方,也有很多提示和技巧可以从一些不太可能的地方收集到。应积极利用Unity网站(www.Unity3D.com)、Unity Forum(forum.unity3d.com)、维基百科(www.unifycommunity.com/wiki)、Unity Answers(answers.unity3d.com)提供的资源,也包括数量巨大的与Unity引擎相关的其他私有网站。

Unity文档也包含了非常丰富而有价值的信息,但是,正如任何技术都有特别的词汇一样,有时候很难找到你想要的东西。在你查询Unity或者Unity3D之前,先搜索互联网通常是找到难以捉摸的概念或功能的最简单的方法。可以通过Help菜单使用Unity帮助,但是通常使用在线版本更快。

0.4 我必须学习脚本吗

用Unity来设计游戏,你不必是一个程序员,但是你必须具备如下能力:识别脚本完成什么功能、知道如何调整脚本以符合你的需要、判断一个脚本是否符合你的需要。

大多数游戏玩法都要通过脚本实现,但是有数以百计的现成脚本都可以重用。Unity自带了一些最常用的脚本。可以访问Unity Forum、Wiki和Unity Answers来搜索查询更多的脚本。很多论坛成员甚至会为较不擅长脚本的用户编写一些代码。在论坛的合作组中,你甚至能找到用脚本换艺术资源的脚本编写者。在本书的最后,你将看到Unity社区的丰富资源。

游戏最初的定义是一种交互;即使在基本由物理规律控制、由逻辑驱动、符合因果规律的游戏中,交互性也是使这些游戏区别于线性的、线索驱动的被动媒体的重要特征。即使是最“对艺术家友好”的游戏引擎也需要通过脚本来进行移动,更不要说简单的环境导航了。本书旨在教你每次熟悉几行脚本代码,并在这个过程中尽可能地提供视觉反馈。本书假设你还没有决定要系统学习脚本,但是乐于以稍被动的方式参与脚本的创建。

0.4.1 除了语法,脚本更重要的是逻辑

尽管很多人因学习一门新的语言而感到困难和胆怯,但可以这样想:大多数人在35岁前已经书写流利,书面语言是我们母语的一个子集。在某种程度上,书面语言有着自己的词汇和语法,并且它与脚本语言非常相似,因此,脚本更像我们母语的一个子集,而不是一门新的语言(对英语为母语的人而言——译者注)。

区别在于掌握这门语言的方法。对于书面语言,由于是我们的母语,因此我们并没有特意准备去学习它。然而,脚本需要我们学习、实验并最终掌握它,这主要是通过反复使用、测试排错以及一些被动的方法来达到,但绝不是死记硬背和紧张的考试。本书主要关于游戏设计与创作背后的逻辑,因此把脚本作为身临其境的体验,即游戏开发过程的一条副线。你可以自由地选择在脚本上投入的精力。无论你怎样选择,本书开发的主要脚本将帮助你使用自己的想法和艺术资源来创建和扩展本书的游戏。

尽管如此,要明白脚本究竟在做什么,只有有限的概念和为数不多的关键字需要掌握。幸运的是,大多数脚本编写者都很友好地将注释包括在脚本中,解释脚本的作用,这使得复杂的脚本变得更易于理解。

本书的脚本以章为单位列出,脚本背后的逻辑在各章中解释,但是希望你可以发挥探索者的好奇心,从脚本的解释中获益并自己做一些实验。

0.4.2 数学是个问题吗

在3D业界,我常听到的一句话是“如果我知道数学这么有用,我当时真应该在学校好好学”。即使如此,大多数艺术家和设计师还是不想花时间提高他们的数学技巧。别担心!我的主要目标是帮助你创建游戏。一些游戏必须实现的功能非常容易使用,即使你不知道它的工作原理。我们大多数人都喜欢驾驶,但是对于汽车内部的发动机却没有广泛的知识。不要介意用同样的方法来对待脚本。

0.5 假设与前提

本书假设你已经至少熟悉3D资源和3D空间,但是书中也有相关概念的一个简短的综述,全书也包括了很多提示和技巧。

本书假设你没有太多的脚本经验(如果有的话),但是你愿意使用它将你的故事变为现实。

本书假设你现在有很少或者没有Unity游戏引擎的经验。

本书也假设你对游戏制作过程非常陌生,但是有非常强烈的愿望创建自己的实时3D游戏。

最后,本书假设如果你希望探索除经典点击式探险游戏之外的其他游戏类型,你会阅读本书,并思考如何将书中的各种技巧应用到其他游戏类型中来得到想要的效果。在休闲游戏市场,综合探险游戏、第一人称射击游戏和其他游戏类型的元素不仅能被认可,而且可以获得一些非常具有娱乐性的效果。

0.6 本书未涵盖的内容

本书不是介绍常规游戏设计的书籍;它更像是一本先导书籍,让你更习惯于分析需求和权衡选择。本书也不是在你需要自己实现游戏所有细节时,用来创作一个详尽的设计文档的书籍,毕竟在对引擎和自己的能力没有充分了解时,这是不大可能的。你将一点点地构建自己的游戏,在此过程中将逐步原型化创意和功能。

本书不是帮助你成为程序员的书籍,它还欠缺一些程序设计的最佳练习。书中的脚本尽可能地提供即时的视觉反馈,以帮助非程序员轻松进入脚本编写过程。尽管同一个目标通常都有多种实现方法,但在本书中,脚本采用艺术家或者设计师最容易理解的方式编写。在本书中,脚本的介绍方式采用人们学习母语的方式。读者被脚本包围,沉浸在脚本中,允许修补脚本,从而可以慢慢地获得关于脚本的基本知识。根本不要担心如何记忆脚本。一些内容你将要在整个项目中反复使用,同时鼓励你将另一些内容记录下来以备之后参考。

0.7 平台

本书使用Unity 4.x并在Windows 7和Windows 8环境下编写和完成。在Mac系统下,快捷键和操作系统文件存储方面的差异将在本书中进行标注,在帮助文件中也可以查到。

 

 

热门图书
推荐新闻
技术文库
论坛推荐