内容简介
作为游戏开发实用指南,《Unity Cookbook中文版:从游戏开发到AI实时解决方案(第2版)》经过全面更新,沿用深受读者欢迎的三合一模式,针对139个有价值的问题给出了详尽的解决方案和有价值的讨论,旨在帮助初学者和中级开发者深入学习Unity引擎的强大功能。全书共13章,主题涉及基础脚本编写到高级技术(如AI、动画和网络等)。通过这本实用性更强的教程,读者将学会如何应用代码片段快速而准确地解决实际问题,尤其是3D游戏开发和2D游戏开发、仿真和人工智能项目中的2D/3D图形、物理、AI、声音、叙事、输入、脚本和网络等问题。
《Unity Cookbook中文版:从游戏开发到AI实时解决方案(第2版)》内容全面,可操作性强,适合希望高效使用Unity的专业人员和其他游戏开发爱好者阅读和参考。
目录
第1 章 Unity 基础 9
1.1 Unity 编辑器 9
1.2 游戏对象 18
1.3 组件 20
1.4 预制件 22
1.5 场景 25
1.6 资源 25
1.7 构建Unity 项目 27
1.8 访问偏好设置 28
1.9 安装Unity 包 30
第2 章 编写脚本 31
2.1 向Unity 场景中的对象添加脚本 32
2.2 在脚本(或游戏对象)生命周期的特定时刻执行代码 36
2.3 创建与帧率无关的行为 38
2.4 使用游戏对象上的组件 40
2.5 查找附加到游戏对象的对象 42
2.6 单例模式 43
2.7 使用协程来管理运行中的代码 46
2.8 使用对象池高效管理对象 50
2.9 在资源中使用 ScriptableObject 存储数据 58
第3 章 输入 61
3.1 获取简单的键盘输入 61
3.2 使用Unity 输入系统 63
3.3 使用输入动作 64
3.4 锁定和隐藏鼠标光标 71
3.5 响应鼠标悬停和点击事件 71
第4 章 数学知识 76
4.1 使用向量存储不同维度的坐标 77
4.2 在三维空间中旋转 83
4.3 在3D 空间中使用矩阵执行变换 85
4.4 角度 90
4.5 确定到目标的距离 91
4.6 寻找与目标之间的角度 92
第5 章 2D 图形 94
5.1 将图像导入为精灵 94
5.2 将精灵添加到场景中 96
5.3 创建精灵动画 97
5.4 为精灵添加2D 物理效果 98
5.5 自定义精灵碰撞形状 98
5.6 复合碰撞体 101
5.7 使用Sprite Packer 102
5.8 对2D 对象施加力 103
5.9 创建传送带 105
5.10 使用自定义材质绘制精灵 106
5.11 管理精灵的绘制顺序 108
5.12 使用排序组 109
5.13 创建2.5D 场景 111
第6 章 3D 图形 112
6.1 创建简单的材质 112
6.2 通过脚本控制材质属性 114
6.3 创建无光照材质 115
6.4 使用纹理设置材质 116
6.5 设置材质使用着色器 118
6.6 利用后处理设置泛光效果 119
6.7 使用通用渲染管线启用后处理设置泛光效果 123
6.8 使用高动态范围颜色 124
6.9 设置项目以使用可编程渲染管线 126
6.10 使用Shader Graph 创建着色器 128
6.11 使用Shader Graph 创建发光效果 129
6.12 通过Shader Graph 公开属性 132
6.13 随时间变化的着色器动画 134
6.14 控制动画着色器的速度 136
6.15 使用子图以重用图形组件 137
6.16 使用Shader Graph 实现溶解效果 139
6.17 使用烘焙光照和实时光照 143
6.18 使用烘焙发射源 
前言/序言
欢迎阅读本书第2 版!在过去的20 年,实时3D 和游戏开发工具不断在进步,吸引着越来越多的人参与游戏开发,无论是大型3A 游戏还是个人利用业余时间开发的独立游戏。
我们很高兴有机会更新这本书,也为我们为这本书付出的心血而感到自豪。希望在你使用Unity 引擎进行游戏开发时,这本书能成为一个得力的助手。自读者2007 年我们开始使用Unity 以来,Unity 已经取得了长足的进步,使用时间越长,我们越容易挖掘出它的新用法和新的优势!这一切令人兴奋异常。相信我们,这是我们的亲身体验。
我们Secret Lab 工作室开发的大部分电子游戏都是用Unity 开发的。Secret Lab 的主要作品有:与澳大利亚广播公司、航空公司、博物馆和学校合作开发的多款少儿游戏、获得英国学院游戏奖(British Academy Games Adwards,BAFTA)和独立游戏节(Independent Games Festival,IGF)大奖的《林中之夜》(Night in the Woods,由Finji 发行)以及广受欢迎的Yarn Spinner 插件。我们开始接触Unity 以来,它就一直是我们创作路上不可或缺的伙伴。
这本书汇集了一系列“配方”,旨在解决Unity 开发过程中经常遇到的问题。虽然本书可能无法解答你对Unity 的所有疑问,但涵盖了日常游戏开发中需要完成的大部分任务。第2 版增加了大量新的内容,反映了Unity 自本书第1 版发布以来的诸多变化,并全面更新了所有相关内容。尽管Unity 的更新速度并不快,但保持走在技术的前沿仍然十分重要。
我们把自己初次使用Unity 时遇到的难题和困惑整理到本书的配方中。真心希望它们能够为你提供帮助。
现在正是使用Unity 的黄金时期。实时开发和游戏开发的世界日新月异,可以选择的工具和技术也达到了前所未有的水平。勇敢地迈出步伐,创造伟大的作品吧!
目标读者和写作风格
本书假设读者对C# 语言或其他类似语言(如C++ 语言、Java 语言、Go 语言、Swift 语言、Python 语言等)有一定的了解,但对Unity 一无所知。本书旨在成为读者的得力助手,帮助读者更快地掌握Unity 并开发出自己的游戏。
如果欣赏我们的写作风格,并希望深入学习更多与Unity 相关的知识,推荐阅读《Unity 手机游戏开发》(Mobile Game Development with Unity),这本书同样由O’Reilly 优秀的团队出版(https://oreil.ly/XO9Jf)。
本书的截图均来自Windows 系统,但书中讨论的内容普遍适用于Windows、macOS和Linux 等不同操作系统下的Unity 使用场景。
本书的结构
本书分为13 章。
> 第1 章“Unity 基础”,介绍使用Unity 时需要了解的基本概念,包括游戏对象、组件、场景以及如何使用Unity 编辑器。
> 第2 章“编写脚本”,讲解Unity 的脚本接口,我们通过这种方式来编写代码,实现项目功能。讲解了基础知识之后,本章接着介绍一系列实用示例,其中包括如何实现保存和加载系统、如何高效地处理对象以及如何以便于代码和Unity处理的方式存储数据。
> 第3 章“输入”,讲解如何获取用户的输入,如键盘输入、鼠标输入和游戏手柄输入。此外,本章还将探讨如何配置响应用户点击等输入事件的游戏对象。
> 第4 章“数学知识”,简要说明开发游戏时需要了解的一些数学概念,如向量、矩阵和四元数。本章还要介绍这些概念的一些实际应用,如检测一个游戏对象是否位于玩家前方。
> 第5 章“2D 图形”,探讨Unity 内置的2D 图形和物理系统。你将从中学习如何显示精灵(sprite),如何对它们进行排序以及如何实现它们之间的碰撞效果。
> 第6章“3D图形”,讲解Unity的材质和着色系统,包括材质和着色器的工作原理、如何在Unity 中创建着色器以及如何在场景中实现最佳视觉效果。
> 第7 章“3D 物理与角色控制”,说明如何利用Unity 的3D 物理系统来满足常见的游戏玩法需求,如拾取和投掷对象,以及创建玩家可以乘坐的移动平台。
> 第8 章“动画与运动”,介绍Unity 的动画系统,说明如何实现角色在不同动画状态之间的自然过渡以及如何将玩家的操作与角色动画结合起来。本章还要介绍Unity 的摄像机系统以及讲解如何使摄像机跟随目标移动。
> 第9 章“逻辑与游戏玩法”,专注于设计和创建游戏玩法。本章要涵盖许多常见的游戏玩法,如管理玩家的任务状态、监控赛车是否在违规抄近道以及管理游戏对象之间的伤害处理。
> 第10 章“行为、模拟和AI”,讲解如何赋予游戏角色智能,使其能够检测到视野中的玩家、自动导航、规避障碍物以及寻找藏身处。本章还要简要探讨如何使用Unity 进行模拟以及使用机器学习技术实现真正的人工智能。
> 第11 章“音频与音乐”,介绍Unity 中的音频系统。本章要从播放音频的基础知识讲起,然后逐步深入到更高级的功能,如将音频路由到不同的音频组以及在游戏角色说话时自动调整背景音乐的音量。
> 第12 章“Unity 的UI 系统”,介绍用于构建UI(用户界