Unity 3D游戏开发(第2版)

Unity 3D游戏开发(第2版)

出版信息

宣雨松 / 人民邮电出版社 / 2018-9 / 89.00元

内容简介

Unity 是一款市场占有率非常高的商业游戏引擎,横跨25 个主流游戏平台。本书基于Unity 2018,结合2D 游戏开发和3D 游戏开发的案例,详细介绍了它的方方面面,内容涉及编辑器、游戏脚本、UGUI 游戏界面、动画系统、持久化数据、静态对象、多媒体、资源加载与优化、自动化与打包等。

本书适合初学者或者有一定基础的开发者阅读。

作者简介

宣雨松

雨松MOMO技术博客博主,10年以上游戏开发经验,北京某上市游戏公司Unity技术专家,国内Unity User Group意见领袖,UVP价值专家,来自古城西安。

目录

第1章 基础知识  1
1.1 Unity简介  1
1.2 跨平台与多工种协作  1
1.3 Unity版本  2
1.4 Unity内置资源或拓展资源  3
1.5 示例项目打包与发布  5
1.6 Unity服务  7
1.7 小结  8
第2章 编辑器的结构  9
2.1 游戏项目  9
2.1.1 创建项目  9
2.1.2 打开项目  10
2.1.3 版本管理  10
2.1.4 安装多个版本的Unity  11
2.2 Project视图  12
2.2.1 创建资源  12
2.2.2 搜索资源  13
2.2.3 搜索标签  14
2.3 Hierarchy视图  16
2.3.1 创建游戏对象  16
2.3.2 搜索游戏对象  16
2.4 Inspector视图  17
2.4.1 标题栏  17
2.4.2 组件栏  18
2.5 Scene视图  19
2.5.1 导航栏  19
2.5.2 标题栏  20
2.5.3 坐标系控制器  21
2.5.4 视图预览  21
2.6 Game视图  22
2.6.1 标题栏  22
2.6.2 视图预览  23
2.7 导航栏视图  23
2.8 其他功能  25
2.8.1 小锁头  25
2.8.2 窗口菜单  25
2.8.3 保存组件参数  26
2.8.4 Package Manager  26
2.9 小结  27
第3章 拓展编辑器  28
3.1 拓展Project视图  28
3.1.1 拓展右键菜单  28
3.1.2 创建菜单  30
3.1.3 拓展布局  31
3.1.4 监听事件  32
3.2 拓展Hierarchy视图  33
3.2.1 拓展菜单  33
3.2.2 拓展布局  34
3.2.3 重写菜单  35
3.3 拓展Inspector视图  37
3.3.1 拓展源生组件  38
3.3.2 拓展继承组件  38
3.3.3 组件不可编辑  40
3.3.4 Context菜单  42
3.4 拓展Scene视图  44
3.4.1 辅助元素  44
3.4.2 辅助UI  45
3.4.3 常驻辅助UI  46
3.4.4 禁用选中对象  47
3.5 拓展Game视图  48
3.6 MenuItem菜单  49
3.6.1 覆盖系统菜单  50
3.6.2 自定义菜单  50
3.6.3 源生自定义菜单  51
3.6.4 拓展全局自定义快捷键  52
3.7 面板拓展  53
3.7.1 Inspector面板  53
3.7.2 EditorWindows窗口  55
3.7.3 EditorWindows下拉菜单  56
3.7.4 预览窗口  57
3.7.5 获取预览信息  59
3.8 Unity编辑器的源码  60
3.8.1 查看DLL  60
3.8.2 清空控制台日志  61
3.8.3 获取EditorStyles样式  63
3.8.4 获取内置图标样式  64
3.8.5 拓展默认面板  66
3.8.6 例子:查找ManagedStatic-References()静态引用  67
3.8.7 UIElements  69
3.8.8 查询系统窗口  71
3.8.9 自定义资源导入类型  73
3.9 小结  74
第4章 游戏脚本  75
4.1 创建脚本  75
4.1.1 脚本模板  75
4.1.2 拓展脚本模板  76
4.2 脚本的生命周期  78
4.2.1 脚本绑定事件  80
4.2.2 脚本初始化和销毁  80
4.2.3 脚本更新与协程任务  82
4.2.4 停止协程任务  83
4.2.5 使用OnGUI显示FPS  84
4.3 多脚本管理  85
4.3.1 脚本的执行顺序  85
4.3.2 多脚本优化  86
4.4 脚本序列化  86
4.4.1 查看数据  87
4.4.2 私有序列化数据  88
4.4.3 serializedObject  90
4.4.4 监听部分元素修改事件  91
4.4.5 序列化/反序列化监听  92
4.4.6 ScriptableObject  95
4.4.7 脚本的Attributes特性  97
4.4.8 单例脚本  99
4.4.9 定时器  100
4.4.10 CustomYieldInstruction  101
4.4.11 工作线程  103
4.5 脚本编译  104
4.5.1 编译规则  105
4.5.2 优化编译  105
4.5.3 编译DLL  105
4.5.4 脚本跨平台  106
4.5.5 程序集定义  106
4.5.6 日志  107
4.6 脚本调试  109
4.7 小结  111
第5章 UGUI游戏界面  112
5.1 基础元素  112
5.1.1 Text  112
5.1.2 描边和阴影  113
5.1.3 动态字体  113
5.1.4 字体花屏  114
5.1.5 Image组件  115
5.1.6 Raw Image组件  116
5.1.7 Button组件  116
5.1.8 Toggle组件  117
5.1.9 Slider组件  118
5.1.10 Scrollbar & ScrollView组件  119
5.1.11 使用ScrollRect组件制作游戏摇杆  120
5.2 事件系统  121
5.2.1 UI事件  122
5.2.2 UI事件管理  124
5.2.3 UnityAction和UnityEvent  126
5.2.4 RaycastTarget优化  128
5.2.5 渗透UI事件  129
5.2.6 例子——新手引导聚合动画  131
5.3 Canvas组件  135
5.3.1 自适应屏幕  135
5.3.2 锚点对齐方式  137
5.3.3 背景图全屏  138
5.3.4 布局组件  139
5.3.5 Canvas优化  139
5.4 Atlas  139
5.4.1 创建Atlas  139
5.4.2 读取Atlas  140
5.4.3 Variant  141
5.4.4 多图集管理  142
5.5 UGUI实例  142
5.5.1 置灰  142
5.5.2 粒子特效与UI的排序  145
5.5.3 Mask & RectMask2D裁切  147
5.5.4 粒子的裁切  148
5.5.5 粒子自适应  152
5.5.6 滑动列表嵌套  154
5.5.7 UI模板嵌套  156
5.5.8 UI特效与界面分离  157
5.5.9 输入事件  161
5.5.10 按钮不规则点击区域  162
5.5.11 更换默认Shader  164
5.5.12 小地图优化  164
5.5.13 查看UGUI源码  165
5.6 小结  165
第6章 2D游戏开发  166
6.1 Sprite  166
6.1.1 2D摄像机与分辨率自适应  167
6.1.2 Sprite Renderer排序  169
6.1.3 裁切  170
6.2 Sprite动画  171
6.2.1 创建2D动画  171
6.2.2 2D动画控制器  173
6.3 Tile地图  176
6.3.1 创建Tile  176
6.3.2 Tile Palette  178
6.3.3 编辑Tile  178
6.3.4 多Tile编辑与排序  179
6.3.5 拓展Tile Palette  180
6.3.6 拓展Tile  183
6.3.7 更新Tile  184
6.4 2D碰撞检测  186
6.4.1 Collider 2D  186
6.4.2 Rigidbody 2D  187
6.4.3 碰撞事件  189
6.4.4 碰撞方向  191
6.4.5 触发器监听  193
6.4.6 Effectors 2D  193
6.4.7 优化  194
6.4.8 计算区域  194
6.5 小结  195
第7章 动画系统  196
7.1 模型  196
7.1.1 Mesh Filter  196
7.1.2 Mesh Renderer  197
7.1.3 Prefab  197
7.2 动画编辑器  198
7.2.1 编辑器面板  198
7.2.2 在编辑器中添加事件  199
7.3 导入类动画  200
7.3.1 人形重定向动画  200
7.3.2 通用动画  202
7.3.3 老版动画  203
7.3.4 导入类动画事件  203
7.4 动画控制器  203
7.4.1 系统状态  204
7.4.2 切换条件  205
7.4.3 状态机脚本  206
7.4.4 IK动画  207
7.4.5 Root Motion  209
7.4.6 Avatar Mask  210
7.4.7 层  211
7.4.8 Blend Tree  212
7.4.9 非运行播放动画  213
7.4.10 Animator Override Controller  214
7.4.11 RuntimeAnimator-Controller  215
7.5 TimeLine编辑器  215
7.5.1 创建Timeline  216
7.5.2 Activation Track  217
7.5.3 Animation Track  217
7.5.4 Audio Track  218
7.5.5 Control Track  218
7.5.6 Playable Track  219
7.5.7 自定义 Track  221
7.6 Playables  222
7.6.1 播放动画  222
7.6.2 动画混合  224
7.6.3 音频混合  225
7.6.4 自定义脚本  226
7.7 Constraint  227
7.7.1 Aim Constraint  227
7.7.2 Parent Constraint  228
7.7.3 脚本控制约束  229
7.8 小结  229
第8章 持久化数据  230
8.1 Excel  230
8.1.1 EPPlus  230
8.1.2 读取Excel  230
8.1.3 写入Excel  232
8.1.4 JSON  233
8.1.5 JSON支持字典  235
8.2 文件读取与写入  236
8.2.1 PlayerPrefs  237
8.2.2 EditorPrefs  237
8.2.3 PlayerPrefs保存复杂结构  238
8.2.4 TextAsset  239
8.2.5 读写文本  240
8.2.6 运行期读写文本  240
8.2.7 PersistentDataPath目录  242
8.2.8 游戏存档  243
8.3 XML  247
8.3.1 创建XML  247
8.3.2 读取与修改  248
8.3.3 XML文件  249
8.4 YAML  251
8.4.1 YamlDotNet  252
8.4.2 序列化和反序列化  252
8.4.3 读取配置  253
8.5 小结  255
第9章 静态对象  256
9.1 Lightmap  256
9.1.1 设置烘焙贴图  256
9.1.2 实时光和焙贴光共存  258
9.1.3 灯光管理  258
9.1.4 运行时更换烘焙贴图  258
9.1.5 动态更换游戏对象  260
9.1.6 复制游戏对象  262
9.2 遮挡剔除  263
9.2.1 遮挡与被遮挡  264
9.2.2 遮挡与被遮挡事件  265
9.2.3 动态剔除  267
9.2.4 自定义遮挡剔除  267
9.3 Batching(静态合批)  268
9.3.1 设置静态合批  268
9.3.2 脚本静态合批  269
9.3.3 动态合批  269
9.3.4 静态合批的隐患  270
9.4 寻路网格  270
9.4.1 设置寻路  270
9.4.2 连接两点  272
9.4.3 获取寻路路径  272
9.4.4 动态阻挡  274
9.4.5 导出寻路网格信息  274
9.5 反射探头  277
9.6 小结  278
第10章 多媒体  279
10.1 音频  279
10.1.1 音频文件  279
10.1.2 Audio Source  280
10.1.3 3D音频  280
10.1.4 代码控制播放  281
10.1.5 混音区  283
10.1.6 Audio Mixer  284
10.1.7 录音  284
10.1.8 声音进度  285
10.2 视频  287
10.2.1 视频文件  287
10.2.2 视频渲染模式  287
10.2.3 视频自适应  288
10.2.4 UI盖在视频之上  289
10.2.5 视频渲染在材质上  290
10.2.6 视频Render Texture  291
10.2.7 播放工程外视频  291
10.2.8 自定义视频显示  293
10.2.9 视频进度  293
10.3 小结  294
第11章 资源加载与优化  295
11.1 编辑模式  295
11.1.1 加载资源  295
11.1.2 实例化Prefab  296
11.1.3 创建Prefab  297
11.1.4 更新Prefab  298
11.1.5 卸载资源  299
11.1.6 游戏对象与资源的关系  299
11.2 版本管理  300
11.2.1 .meta文件  300
11.2.2 多工程  301
11.2.3 同步文件  302
11.2.4 SVN外链  303
11.3 运行模式  304
11.3.1 引用资源  304
11.3.2 Resources  305
11.3.3 删除对象  306
11.3.4 删除资源  306
11.3.5 GC  307
11.4 AssetBundle  308
11.4.1 设置AssetBundle  308
11.4.2 依赖关系  310
11.4.3 通过脚本设置依赖关系  311
11.4.4 压缩格式  311
11.4.5 加载包体内的AssetBundle  312
11.4.6 下载AssetBundle  313
11.4.7 加载场景  314
11.4.8 卸载AssetBundle  315
11.5 游戏对象  315
11.5.1 创建游戏对象  316
11.5.2 Transform设置排序  316
11.5.3 删除节点  317
11.5.4 获取游戏对象  317
11.5.5 管理游戏组件  318
11.6 优化工具  319
11.6.1 重复无用资源  319
11.6.2 查看内存  321
11.6.3 查看CPU效率  321
11.6.4 自定义观察区间  322
11.6.5 Profiler信息的导出与导入  323
11.6.6 Frame Debugger  324
11.7 资源管理实例  325
11.7.1 特殊内置的文件夹  325
11.7.2 隐藏文件夹  326
11.7.3 Resources与AssetBundle无缝切换  326
11.7.4 资源加载策略  329
11.7.5 资源更新  329
11.7.6 资源引用关系  329
11.7.7 系统资源修改  332
11.7.8 AssetBundle里的脚本  333
11.7.9 热更新代码  334
11.8 小结  335
第12章 自动化与打包  336
12.1 资源导入  336
12.1.1 监听导入事件  336
12.1.2 自动设置贴图压缩格式  337
12.1.3 自动设置模型  339
12.1.4 禁止模型生成材质文件  340
12.1.5 删除移动资源事件  341
12.1.6 选择性自动设置  342
12.1.7 主动设置  342
12.1.8 待保存状态  343
12.1.9 自动执行MenuItem  344
12.2 配置错误  345
12.2.1 主动检查工具  345
12.2.2 被动检查工具  346
12.2.3 导出类检查工具  346
12.2.4 导出UI  346
12.2.5 生成UI代码  347
12.2.6 导出模型  351
12.2.7 不参与保存对象  352
12.2.8 导出场景  353
12.2.9 过滤无用场景  355
12.3 自动打包  356
12.3.1 打包前后事件  356
12.3.2 打包后自动压缩  357
12.3.3 用C# 调用shell脚本  359
12.3.4 等待shell结束  359
12.3.5 shell脚本调用C#  360
12.3.6 shell脚本自动打包  362
12.3.7 彻底解放程序员的双手  365
12.4 自动构建图集与压缩  366
12.4.1 UI图集的压缩  366
12.4.2 非UI图集压缩  370
12.5 小结  371
第13章 3D游戏开发  372
13.1 Shader  372
13.1.1 固定渲染管线  372
13.1.2 可编程渲染管线  375
13.1.3 可编程渲染管线的表面着色器  378
13.1.4 深度排序  379
13.1.5 透明  381
13.1.6 裁切  382
13.1.7 着色器变体采集  383
13.2 摄像机  384
13.2.1 3D坐标转换屏幕坐标  384
13.2.2 3D坐标转换UI坐标  385
13.2.3 主摄像机  387
13.2.4 在UI上显示模型  387
13.2.5 Render Texture  389
13.2.6 在Render Texture上显示带特效的模型  390
13.2.7 LOD Group  392
13.3 场景管理  393
13.3.1 切换场景  393
13.3.2 DontDestroyOnLoad  393
13.3.3 异步加载场景以及进度  393
13.3.4 多场景  395
13.3.5 多场景游戏对象管理  396
13.3.6 场景切换事件  397
13.3.7 多场景烘焙  398
13.4 输入事件  398
13.4.1 全局事件  398
13.4.2 射线  399
13.4.3 点选3D模型  400
13.4.4 通过点击控制人物移动  402
13.5 物理碰撞  403
13.5.1 碰撞器  404
13.5.2 角色控制器  404
13.5.3 碰撞区域  405
13.5.4 碰撞检测  406
13.5.5 碰撞触发器  407
13.5.6 物理调试器  408
13.6 实战技巧  409
13.6.1 3D头顶文字  409
13.6.2 图文混排  410
13.6.3 图片数字  410
13.6.4 游戏对象缓存池  412
13.6.5 游戏资源缓存池  414
13.6.6 运行时合并网格  414
13.6.7 运行时合并贴图  416
13.7 小结  419

本文地址:https://www.codercto.com/books/d/736.html

JSON 在线解析

JSON 在线解析

在线 JSON 格式化工具

UNIX 时间戳转换

UNIX 时间戳转换

UNIX 时间戳转换

RGB CMYK 转换工具

RGB CMYK 转换工具

RGB CMYK 互转工具