新書推薦:
《
第十三位陪审员
》
售價:NT$
245.0
《
微观经济学(第三版)【2024诺贝尔经济学奖获奖者作品】
》
售價:NT$
709.0
《
Python贝叶斯深度学习
》
售價:NT$
407.0
《
文本的密码:社会语境中的宋代文学
》
售價:NT$
306.0
《
启微·狂骉年代:西洋赛马在中国
》
售價:NT$
357.0
《
有趣的中国古建筑
》
售價:NT$
305.0
《
十一年夏至
》
售價:NT$
347.0
《
如何打造成功的商业赛事
》
售價:NT$
407.0
編輯推薦:
Unity引擎已经进入了成熟期并一直保持平稳而持续的更新,但是官方资料和文档的更新并不是很及时,还迟迟没有中文文档,对于学习者来说形成了一个不大不小的困难。同时网络上的视频教程、图文教程的知识呈碎片化,难以形成体系,导致学习者在一些重要的细节上不知其所以然。
本书的作者均是多年置身于游戏开发一线的开发者,有着丰富的游戏开发实践经验,且部分作者有丰富的游戏开发教学经验,本书是他们总结经验、持续学习的成果,适合初学Unity,又具有比较完整的知识体系。本书既可以作为初学者的入门书籍,又可以作为进阶者的查阅材料。
內容簡介:
Unity 作为一个成熟的游戏引擎,其设计和使用都是有层次的。本书共 13 章,第 1 章至第 3 章为基础知识部分,主要介绍 Unity 的基本操作、基本概念、编写脚本的方法、导入和使用资源的方法,学完这部分内容后,你已经可以做出很多有趣的小游戏了。第 4 章至第 11 章主要介绍 Unity 重要的系统模块、功能,包括物理系统、UI 界面系统、动画系统、3D 数学基础、场景管理、导航系统、着色器系统、打包与发布等,读完以后可以掌握高级的开发技术并解决实际问题。第 12 章和第 13 章是两个有代表性的 Unity游戏示例,一个是 3D 跑酷游戏,另一个是 2D 的弹球游戏,综合展示了 Unity 的大部分功能,具有较强的代表性。除了这些内容,每章都会有一些小的示例,以方便大家实践并理解具体概念。由于实例部分的内容操作流程较多,不易用图文展现,本书还特别附赠了视频教程来方便读者学习。
本书适合广大 Unity 初学者入门时使用,也适合 Unity 用户查阅和参考软件具体的使用方法、注意事项等,所以也可以作为一本 Unity 的参考手册使用。
關於作者:
马遥:
从高中时代就开始制作文曲星游戏,就此踏入游戏开发的世界。曾在像素软件公司开发大型网络游戏《寻仙》,创业时期曾主持开发多款手游和HTML 5游戏。后期专注于高性能游戏服务器的设计。平时喜欢研究动态语言和算法,擅长讲解复杂的算法和概念。Practical Game AIProgramming 译者。目前专业从事游戏开发教育,教授Unity引擎的使用,希望带领更多人走进游戏开发的世界。
陈虹松:
拥有多年一线游戏开发工作经验,对Gameplay设计与实现的相关内容有着深入的理解,特别是动作游戏与回合制游戏。擅长分析游戏开发中的疑难问题。工作中的填坑侠,团队中的万事屋。参与项目有《次元召唤师》,《悠唐天下》等。希望把Unity理论与实践中的关键问题总结出来,让新手少走弯路,老手也能作为参考。
马遥:
从高中时代就开始制作文曲星游戏,就此踏入游戏开发的世界。曾在像素软件公司开发大型网络游戏《寻仙》,创业时期曾主持开发多款手游和HTML 5游戏。后期专注于高性能游戏服务器的设计。平时喜欢研究动态语言和算法,擅长讲解复杂的算法和概念。Practical Game AI Programming 译者。目前专业从事游戏开发教育,教授Unity引擎的使用,希望带领更多人走进游戏开发的世界。
陈虹松:
拥有多年一线游戏开发工作经验,对Gameplay设计与实现的相关内容有着深入的理解,特别是动作游戏与回合制游戏。擅长分析游戏开发中的疑难问题。工作中的填坑侠,团队中的万事屋。参与项目有《次元召唤师》,《悠唐天下》等。希望把Unity理论与实践中的关键问题总结出来,让新手少走弯路,老手也能作为参考。
林凡超:
拥有8年游戏行业研发经验,项目曾获得全球iOS Feature推荐。客户端与服务器兼修,擅长游戏框架设计。曾在龙渊网络、酷咔数字、维京游戏等多家著名游戏公司担任主程职位,对于行业发展及项目研发有较为深入的了解。擅长UE与Unity 3D等主流引擎,对多种游戏类型均有深度研究,参与过《兰空VOEZ》、《雾霾之下》、《禽兽三国》等项目。
目錄 :
第 1 章 初识 Unity 1
1.1 下载与安装 1
1.1.1 下载 Unity 安装程序 1
1.1.2 安装 Unity 2
1.1.3 多版本并存 2
1.2 初次运行 2
1.2.1 工程页面 2
1.2.2 学习资料页面 3
1.2.3 新建工程 3
1.2.4 打开工程 3
1.3 工程窗口 4
1.3.1 基本功能 5
1.3.2 搜索功能 5
1.3.3 搜索资源商店 6
1.3.4 快捷键 7
1.4 场景视图窗口 8
1.4.1 浏览场景 8
1.4.2 场景辅助线框 8
1.4.3 修改物体的位置 10
1.4.4 场景视图工具条 14
1.5 辅助线框菜单 16
1.5.1 辅助线框 16
1.5.2 辅助图标 17
1.5.3 显示网格 18
1.5.4 选中时高亮和选中框线 18
1.5.5 内置组件的显示 19
1.6 层级窗口 19
1.6.1 父子关系 19
1.6.2 将物体设置为子物体 20
1.6.3 同时编辑多个场景 . 20
1.7 检视窗口 20
1.7.1 检视物体和选项 .21
1.7.2 添加、删除组件 .21
1.7.3 复制组件或组件参数 22
1.7.4 查看脚本参数 .22
1.7.5 查看素材 23
1.7.6 工程设置 24
1.7.7 修改组件的顺序 24
1.8 工具栏 25
1.9 游戏视图窗口 25
1.9.1 播放和暂停 26
1.9.2 游戏视图的工具条 26
1.9.3 自定义 Unity 的开发环境 27
1.10 Unity 的常用快捷键 29
1.11 动手搭建游戏场景31
1.12 2D 与 3D 工程的区别 36
1.13 总结 37
第 2 章 开始 Unity 游戏开发 39
2.1 场景 39
2.1.1 场景的概念 39
2.1.2 保存场景 40
2.1.3 打开场景 40
2.2 游戏物体 40
2.3 组件 41
2.3.1 变换组件 41
2.3.2 其他组件 42
2.4 使用组件 42
2.4.1 添加组件 43
2.4.2 编辑组件 44
2.4.3 组件选项菜单 45
2.4.4 测试组件参数 45
2.5 最基本的组件 变换组件 46
2.5.1 属性列表 46
2.5.2 编辑变换组件 46
2.5.3 父子关系 47
2.5.4 非等比缩放的问题 47
2.5.5 关于缩放和物体大小的问题48
2.5.6 变换组件的其他注意事项 48
2.6 脚本与组件操作 49
2.6.1 创建和使用脚本 49
2.6.2 初识脚本 49
2.6.3 用脚本控制游戏物体 50
2.6.4 变量与检视窗口 51
2.6.5 通过组件控制游戏物体 52
2.6.6 访问其他游戏物体 53
2.6.7 常用的事件函数 55
2.6.8 时间和帧率 56
2.6.9 创建和销毁物体 57
2.6.10 使游戏物体或组件无效化 58
2.6.11 父物体无效化 58
2.7 脚本组件的生命期 58
2.8 标签 61
2.8.1 为物体设置标签 61
2.8.2 创建新的标签 62
2.8.3 小提示 62
2.9 静态物体 62
2.10 层级 63
2.10.1 新建层级 63
2.10.2 为物体指定层级 64
2.10.3 仅渲染场景的一部分 64
2.10.4 选择性的射线检测 65
2.11 预制体 66
2.11.1 使用预制体 66
2.11.2 通过游戏物体实例修改预制体 67
2.11.3 在运行时实例化预制体 67
2.12 保存工程的注意事项 71
2.12.1 保存当前场景 71
2.12.2 保存工程 72
2.12.3 不需要保存的改动 73
2.13 输入 74
2.13.1 传统输入设备与虚拟输入轴 74
2.13.2 移动设备的输入 77
2.13.3 VR 输入概览 81
2.14 方向与旋转的表示方法 81
2.14.1 欧拉角 81
2.14.2 四元数 82
2.14.3 直接使用四元数 83
2.14.4 在动画中表示旋转 84
2.15 灯光 85
2.15.1 渲染路径 85
2.15.2 灯光的种类 86
2.15.3 灯光设置详解 89
2.15.4 使用灯光 90
2.16 摄像机 91
2.16.1 属性介绍 91
2.16.2 细节 93
2.16.3 渲染路径 93
2.16.4 清除标记 93
2.16.5 剪切面 95
2.16.6 剔除遮罩 96
2.16.7 视图矩形 96
2.16.8 正交摄像机 96
2.16.9 渲染贴图 96
2.16.10 显示目标 97
2.16.11 其他提示 97
2.17 开始做游戏吧 97
第 3 章 资源工作流程 98
3.1 内置的基础物体98
3.1.1 立方体 98
3.1.2 球体 99
3.1.3 胶囊体 99
3.1.4 柱体 99
3.1.5 平面 100
3.1.6 四边形 100
3.2 资源导入 101
3.3 资源导入设置 103
3.4 导入图片资源的设置 103
3.4.1 图片资源的导入方式 103
3.4.2 图片纹理的类型 104
3.5 模型资源的导入流程 110
3.5.1 导入人形动画 111
3.5.2 导入非人形动画 113
3.5.3 模型资源导入设置 115
3.6 声音资源的导入设置 137
3.7 从资源商店导入资源 137
3.7.1 进入资源商店和选购 137
3.7.2 下载的资源文件的存储位置 138
3.8 资源包 139
3.8.1 导入包 139
3.8.2 导出包 140
3.8.3 导出更新包 141
3.9 标准资源 142
第 4 章 物理 143
4.1 简介 143
4.2 概述基本概念 143
4.2.1 刚体 143
4.2.2 休眠 144
4.2.3 碰撞体 144
4.2.4 物理材质 145
4.2.5 触发器 145
4.2.6 碰撞与脚本行为 145
4.2.7 对碰撞体按照处理方式分类 145
4.2.8 碰撞事件触发表 .146
4.2.9 物理关节 147
4.2.10 角色控制器 147
4.3 刚体 148
4.3.1 属性介绍 148
4.3.2 父子关系 149
4.3.3 脚本问题 149
4.3.4 刚体和动画 149
4.3.5 刚体和碰撞体 150
4.3.6 组合碰撞体 150
4.3.7 连续碰撞检测 150
4.3.8 比例和单位的重要性 151
4.3.9 其他问题 152
4.4 盒子碰撞体 152
4.5 胶囊碰撞体 152
4.6 网格碰撞体 153
4.6.1 属性 153
4.6.2 限制条件和解决方法 154
4.6.3 其他问题 155
4.7 球体碰撞体 155
4.8 地形碰撞体 156
4.9 物理材质 156
4.10 固定关节 157
4.11 铰链关节 158
4.12 弹簧关节 160
4.13 角色控制器 161
4.13.1 属性 161
4.13.2 详细说明 162
4.13.3 调整参数的技巧 162
4.13.4 防止角色被卡住 162
4.13.5 小技巧 163
4.14 常量力 163
4.14.1 属性 163
4.14.2 小技巧 163
4.15 车轮碰撞体 163
4.15.1 属性 164
4.15.2 详细说明 164
4.15.3 具体的设置方法 165
4.15.4 碰撞体的外形问题 165
4.15.5 车轮阻尼曲线 165
4.15.6 小技巧 166
4.16 车辆创建入门 166
4.16.1 创建车辆的基本框架 166
4.16.2 可控制的车辆 167
4.16.3 车轮的外观 168
4.17 物理系统的实践 169
4.17.1 不倒翁的制作 169
4.17.2 锁链的制作 173
4.18 物理系统可视化调试 177
第 5 章 UI 界面 181
5.1 UI 组件 181
5.1.1 渲染组件 181
5.1.2 布局组件 183
5.1.3 显示组件 185
5.1.4 交互组件 187
5.1.5 事件功能 196
5.2 UI 进阶 201
5.2.1 图集 201
5.2.2 图片格式 202
5.2.3 渲染顺序 202
5.2.4 实现圆盘转动的效果 204
第 6 章 动画 210
6.1 基础概念 210
6.1.1 什么是帧 210
6.1.2 模型动画与非模型动画 210
6.1.3 动画混合的核心 插值与权重 211
6.2 Mecanim 动画系统 211
6.2.1 动画系统的工作流 211
6.2.2 动画剪辑 213
6.3 动画控制器 223
6.3.1 动画状态机 223
6.3.2 动画层级 228
6.3.3 动画混合树 228
6.4 使用人形角色动画 .231
6.4.1 人形骨架映射 231
6.4.2 人形动画身体遮罩 234
6.4.3 人形动画的重定向 235
6.4.4 逆向运动学 237
6.5 实践:实现一个带有动画且操作流畅的角色控制器 238
6.5.1 创建工程 238
6.5.2 模型下载 239
6.5.3 创建动画状态机 239
6.5.4 配置动画状态机 241
6.5.5 代码控制 243
第 7 章 游戏开发的数学基础 245
7.1 坐标系 245
7.1.1 左手坐标系、右手坐标系 245
7.1.2 世界坐标系 246
7.1.3 局部坐标系 246
7.1.4 屏幕坐标系 247
7.2 向量 248
7.2.1 向量的加法 248
7.2.2 向量的减法 248
7.2.3 点乘 248
7.2.4 叉乘 249
7.2.5 Vector3 结构体 249
7.2.6 位置与向量的区别和联系 250
7.2.7 Vector3 的用法 251
7.3 矩阵 252
7.4 齐次坐标 253
7.5 四元数 253
7.5.1 概念 253
7.5.2 结构体的简介 254
7.5.3 四元数的操作示例 255
7.6 本章小结 258
第 8 章 场景管理 259
8.1 多场景编辑 259
8.1.1 在编辑器中打开多个场景 259
8.1.2 场景分隔栏菜单 260
8.1.3 多场景烘焙光照贴图 261
8.1.4 多场景烘焙寻路网格 261
8.1.5 多场景烘焙遮挡剔除信息 261
8.1.6 多场景运行游戏 262
8.1.7 场景相关设置 262
8.1.8 注意事项 262
8.2 运行时的场景管理 263
8.2.1 场景管理类 263
8.2.2 运行时切换场景 263
8.2.3 切换场景时不销毁游戏物体 265
8.2.4 异步加载场景 266
第 9 章 导航系统 268
9.1 概述 268
9.2 导航系统内部的工作机制 269
9.2.1 可行走区域 269
9.2.2 寻路算法 269
9.2.3 具体路径 270
9.2.4 避开障碍 270
9.2.5 让代理移动 270
9.2.6 全局导航与局部导航 270
9.2.7 障碍的两个例子 271
9.2.8 链接关系 271
9.3 导航系统的构建组件 271
9.3.1 导航代理组件 271
9.3.2 导航障碍物 273
9.3.3 网格链接组件 274
9.4 构建导航网格 275
9.5 创建导航代理 277
9.6 创建导航障碍物 278
9.7 创建网格链接 279
9.8 自动构建网格链接 280
9.9 建立高度网格 281
9.10 导航区域和移动成本 282
9.10.1 寻路成本 283
9.10.2 区域类型 283
9.10.3 区域掩码 284
9.11 新版导航系统组件 284
9.11.1 导航网格表面组件 284
9.11.2 导航网格修正组件 286
9.11.3 导航修正区域组件 287
9.11.4 导航网格链接组件 287
9.11.5 构建导航网格的 API 289
9.12 与其他组件一起使用的问题 291
9.12.1 导航代理组件与物理组件混用 291
9.12.2 导航网格组件与动画组件混用 291
第 10 章 着色器 293
10.1 Unity 着色器的简介 293
10.2 编写表面着色器 293
10.2.1 简介 294
10.2.2 预处理指令 295
10.2.3 表面着色器的输入结构体 297
10.3 ShaderLab 简介 297
10.3.1 语法 298
10.3.2 属性 298
10.3.3 子着色器与回滚 298
10.3.4 例子 298
10.4 材质、着色器、贴图的关系 299
10.5 表面着色器的实例 300
10.5.1 从最简单的例子开始 300
10.5.2 贴图 301
10.5.3 法线贴图 302
10.5.4 边缘发光 303
10.5.5 细节贴图 304
10.5.6 屏幕空间中的细节贴图 305
10.5.7 立方体反射 306
10.5.8 世界空间切片 307
10.5.9 修改顶点的位置 308
10.5.10 逐顶点的数据处理 309
10.5.11 调整最终颜色 310
10.5.12 雾 311
10.5.13 总结 312
第 11 章 打包与发布 313
11.1 打包设置 313
11.2 发布设置菜单 313
11.3 发布为桌面程序 314
11.4 发布时的内部流程 314
11.5 发布为安卓应用程序.315
11.5.1 JDK 概述 315
11.5.2 JDK 的下载、安装 315
11.5.3 配置环境变量 316
11.5.4 SDK 概述 317
11.5.5 下载安卓 SDK 317
11.5.6 导出设置 319
第 12 章 示例教程跑酷游戏 323
12.1 准备工具 323
12.2 分析需求 323
12.3 控制人物动作 323
12.4 生成地图 324
12.4.1 创建地图模板 324
12.4.2 设置地图生成规则 325
12.4.3 使地图运动 326
12.4.4 生成道具 329
12.4.5 复杂地形 330
12.5 控制人物 333
12.5.1 分析人物动作 333
12.5.2 添加角色控制器 333
12.5.3 向前移动 333
12.5.4 左右移动 334
12.5.5 左转与右转 334
12.5.6 跳跃与下滑 334
12.5.7 播放道路动画 335
12.6 游戏音效 336
12.6.1 背景音效 336
12.6.2 道具音效 336
12.7 显示得分 337
12.8 触摸控制 338
12.8.1 向量的点乘 338
12.8.2 代码实现 339
第 13 章 示例教程2D 物理弹球 343
13.1 游戏玩法 343
13.2 分析需求 345
13.3 搭建场景 345
13.3.1 砌墙(限定小球的活动区域)345
13.3.2 创建枪口(用于初始化小球的发射位置)346
13.3.3 显示分数 347
13.3.4 创建小球 347
13.3.5 创建道具预制件 347
13.3.6 创建几何图形 352
13.3.7 创建关卡 353
13.3.8 发射 359
13.3.9 小球寻路 362
13.3.10 菜单面板 364
13.3.11 总结 366
內容試閱 :
Unity 引擎已经流行了很多年,时至今日,可以说已经进入了成熟期。进入了成熟期的 Unity一直在保持平稳而持续的更新节奏,但是官方资料和文档的更新并不是很及时,特别是对广大国内游戏开发者来说,官方迟迟没有推出中文文档,这对学习 Unity 来说就形成了不大不小的阻碍。
除官方资料外,目前市面上也有大量 Unity 的相关书籍和学习资料。但现在新手学习 Unity的最常见途径是通过视频,这种新的学习方法值得推广,笔者自己也做过一些免费的视频教程。
不过,视频教程、图文教程有一个很大的弊端,那就是知识碎片化、难以形成体系,这导致学习者在一些重要的细节上不知其所以然。笔者认为学习时间可以碎片化,但知识体系是不能碎片化的。
本书的几位作者在阅读 Unity 官方文档时曾受到过很大的启发,官方文档中的一些原理和注意事项对我们的帮助尤其大。例如,在介绍动画系统、物理引擎的相关概念,以及场景拆解合并的内容中,都包含了很多极其有用却容易被忽略的信息。我们在游戏开发工作中对引擎的一些错误使用,其实都源于我们对引擎理解得不完整,而这些问题在官方文档中都已经有过提示和讲解。
一直以来,我们都渴望将这些帮助过我们的、精华的知识分享给所有开发者。这次电子工业出版社给了我们一个难得的机会,让我们可以编写一本适合 Unity 初学者的具有比较完整的知识体系的书籍,所以我们满怀热情地开始了这本书的编写工作。本书既可以作为初学者的入门书籍,又可以作为进阶者查阅知识点的资料。
专为Unity初学者量身打造
本书面向 Unity 的初学者,无论是对 Unity 一无所知的初学者,还是有一定基础、想要了解更多知识的 Unity 用户,都可以从书中轻松获取需要的内容。
图书结构科学合理
凭借深入细致的市场调查和研究,我们针对 Unity 初学者的特点和需求,精心安排了适合的学习结构,通过将知识点和实例相结合帮助读者轻松、快速地学习。
学练结合,理论联系实际
本书以实用为宗旨,大量知识点都力求贴近实战,并提供了众多精彩且颇具实用价值的综合实例,希望能帮助读者轻而易举地理解重点和难点,并有效地提高动手能力。
配有精彩、超值的教学视频
本书附赠配套教学视频,让读者学习知识更加轻松自如!
本书在编写过程中遇到了很多困难,但最终在皮皮关的老师们的通力合作之下顺利完成。在此特别感谢本书的组织者杨奕,吴江川、黎大林、伍书培、沈琰也为本书贡献了部分内容。最后还要感谢电子工业出版社的孔祥飞老师,没有他的敦促与细心审校,本书肯定难以完成。
由于编者水平有限,书中的错误和疏漏在所难免,如有任何意见和建议,请读者不吝指正,感激不尽。