书籍详情
Unity3D高级编程:主程手记
作者:陆泽西 著
出版社:机械工业出版社
出版时间:2022-01-01
ISBN:9787111698197
定价:¥99.00
购买这本书可以去
内容简介
本书分 10 章,每章都是一个独立的知识领域,读者可以按照章节顺序阅读本书,也可以根据喜好挑选自己感兴趣的章节学习。第 1 章讲了架构的意义、架构的原理以及如何实现架构。第 2 章对 C# 技术的基础知识做了详细的讲解。第 3 章主要针对客户端中的表格数据、程序的协作与应用进行讲解。第 4章介绍的是用户界面(UI)的工作原理与优化手段。第 5 章针对 3D 模型的原理、动画的原理以及两者的优化做了详细的讲解。第 6 章介绍的是网络层的业务与底层原理。第 7 章针对各种 AI 类型进行了解析。第 8 章主要介绍场景构建与优化、地图构建以及寻路算法优化的相关知识。第 9 章则给出了图形数学、图形学常用算法、渲染管线的相关知识。第 10 章针对客户端各类渲染技术的渲染原理进行了详细的解析。
作者简介
暂缺《Unity3D高级编程:主程手记》作者简介
目录
前 言
第1章 软件架构 1
1.1 架构的意义 1
1.2 软件架构的思维方式 5
1.3 如何构建Unity3D项目 9
第2章 C#技术要点 14
2.1 Unity3D中C#的底层原理 14
2.2 List底层源码剖析 17
2.3 Dictionary底层源码剖析 27
2.4 浮点数的精度问题 39
2.5 委托、事件、装箱、拆箱 44
2.5.1 委托与事件 44
2.5.2 装箱和拆箱 45
2.6 排序算法 48
2.6.1 快速排序算法 48
2.6.2 最大最小堆 50
2.6.3 其他排序算法概述 51
2.7 各类搜索算法 51
2.7.1 搜索算法概述 52
2.7.2 二分查找算法 52
2.7.3 二叉树、二叉查找树、平衡二叉树、红黑树和B树 52
2.7.4 四叉树搜索算法 53
2.7.5 八叉树搜索算法 54
2.8 业务逻辑优化技巧 54
2.8.1 使用List和Dictionary时提高效率 55
2.8.2 巧用struct 55
2.8.3 尽可能地使用对象池 57
2.8.4 字符串导致的性能问题 61
2.8.5 字符串的隐藏问题 64
2.8.6 程序运行原理 65
第3章 数据表与程序 68
3.1 数据表的种类 68
3.1.1 大部分数据都是在Excel里生成的 68
3.1.2 最原始的数据方式—代码数据 69
3.1.3 文本数据 69
3.1.4 比特流数据 70
3.2 数据表的制作方式 71
3.2.1 制作方式简介 71
3.2.2 让数据使用起来更加方便 72
3.3 多语言的实现 75
第4章 用户界面 78
4.1 用户界面系统的比较 78
4.2 UGUI系统的原理及其组件使用 79
4.2.1 UGUI系统的运行原理 79
4.2.2 UGUI系统的组件 80
4.3 UGUI事件模块剖析 82
4.3.1 UGUI事件系统源码剖析 82
4.3.2 输入事件源码 82
4.3.3 事件数据模块 83
4.3.4 输入事件捕获模块源码 84
4.3.5 射线碰撞检测模块源码 89
4.3.6 事件逻辑处理模块 91
4.4 UGUI核心源码剖析 91
4.4.1 UGUI核心源码结构 91
4.4.2 Culling模块 91
4.4.3 Layout模块 93
4.4.4 MaterialModif?iers、Specialized-Collections和Utility 94
4.4.5 VertexModif?iers 95
4.4.6 核心渲染类 96
4.5 快速构建一个简单易用的UI框架 101
4.6 UI优化 107
4.6.1 UI动静分离 108
4.6.2 拆分过重的UI 108
4.6.3 UI预加载 109
4.6.4 UI图集Alpha分离 110
4.6.5 UI字体拆分 111
4.6.6 Scroll View优化 112
4.6.7 网格重构的优化 113
4.6.8 UI展示与关闭的优化 114
4.6.9 对象池的运用 114
4.6.10 UI贴图设置的优化 115
4.6.11 内存泄漏 117
4.6.12 针对高低端机型的优化 123
4.6.13 UI图集拼接的优化 126
4.6.14 GC的优化 127
第5章 3D模型与动画 134
5.1 美术资源规范 134
5.2 合并3D模型 141
5.2.1 网格模型的基础知识 141
5.2.2 动态批处理 143
5.2.3 静态批处理 144
5.2.4 自己编写合并3D模型的程序 145
5.3 状态机 147
5.3.1 如何用状态机模拟人物行为动作 147
5.3.2 在游戏的人物行为动作中使用状态机 148
5.3.3 在游戏项目中使用状态机的地方 148
5.4 3D模型的变与换 152
5.4.1 切割模型 154
5.4.2 扭曲模型 156
5.4.3 简化模型 157
5.4.4 蒙皮骨骼动画 159
5.4.5 人物3D模型动画换皮换装 165
5.4.6 捏脸 167
5.4.7 动画优化 169
5.5 资源的加载与释放 176
第6章 网络通信 183
6.1 TCP与UDP 183
6.1.1 TCP和UDP简介 183
6.1.2 UDP的特点 185
6.1.3 是用TCP还是用UDP 186
6.2 C#实现TCP 187
6.2.1 程序实现TCP长连接 187
6.2.2 TCP的API库 187
6.2.3 线程锁 188
6.2.4 缓冲队列 188
6.2.5 双队列结构 190
6.2.6 发送数据 191
6.2.7 协议数据定义标准 192
6.2.8 断线检测 195
6.3 C#实现UDP 196
6.3.1 实现UDP 196
6.3.2 连接确认机制 196
6.3.3 数据包校验与重发机制 199
6.3.4 丢包问题分析 201
6.4 封装HTTP 202
6.4.1 HTTP协议原理 202
6.4.2 HTTP1.0、HTTP1.1、HTTP2.0简述 204
6.4.3 在Unity3D中的HTTP封装 206
6.4.4 多次请求时连续发送HTTP请求引起的问题 209
6.5 网络数据协议原理 222
6.5.1 协议包的格式 222
6.5.2 JSON 223
6.5.3 自定义二进制数据流协议格式 224
6.5.4 MessagePack 226
6.5.5 Protobuf 229
6.5.6 限定符的规则 231
6.5.7 Protobuf的原理:序列化和反序列化 232
6.5.8 Protobuf更改数据结构后的兼容问题 235
6.5.9 Protobuf的优点 236
6.5.10 Protobuf的不足 237
6.6 网络同步解决方案 237
6.6.1 状态同步法 237
6.6.2 实时广播同步法 239
6.6.3 帧同步 240
6.6.4 同步快进 242
6.6.5 精度问题 243
6.6.6 同步锁机制 244
第1章 软件架构 1
1.1 架构的意义 1
1.2 软件架构的思维方式 5
1.3 如何构建Unity3D项目 9
第2章 C#技术要点 14
2.1 Unity3D中C#的底层原理 14
2.2 List底层源码剖析 17
2.3 Dictionary底层源码剖析 27
2.4 浮点数的精度问题 39
2.5 委托、事件、装箱、拆箱 44
2.5.1 委托与事件 44
2.5.2 装箱和拆箱 45
2.6 排序算法 48
2.6.1 快速排序算法 48
2.6.2 最大最小堆 50
2.6.3 其他排序算法概述 51
2.7 各类搜索算法 51
2.7.1 搜索算法概述 52
2.7.2 二分查找算法 52
2.7.3 二叉树、二叉查找树、平衡二叉树、红黑树和B树 52
2.7.4 四叉树搜索算法 53
2.7.5 八叉树搜索算法 54
2.8 业务逻辑优化技巧 54
2.8.1 使用List和Dictionary时提高效率 55
2.8.2 巧用struct 55
2.8.3 尽可能地使用对象池 57
2.8.4 字符串导致的性能问题 61
2.8.5 字符串的隐藏问题 64
2.8.6 程序运行原理 65
第3章 数据表与程序 68
3.1 数据表的种类 68
3.1.1 大部分数据都是在Excel里生成的 68
3.1.2 最原始的数据方式—代码数据 69
3.1.3 文本数据 69
3.1.4 比特流数据 70
3.2 数据表的制作方式 71
3.2.1 制作方式简介 71
3.2.2 让数据使用起来更加方便 72
3.3 多语言的实现 75
第4章 用户界面 78
4.1 用户界面系统的比较 78
4.2 UGUI系统的原理及其组件使用 79
4.2.1 UGUI系统的运行原理 79
4.2.2 UGUI系统的组件 80
4.3 UGUI事件模块剖析 82
4.3.1 UGUI事件系统源码剖析 82
4.3.2 输入事件源码 82
4.3.3 事件数据模块 83
4.3.4 输入事件捕获模块源码 84
4.3.5 射线碰撞检测模块源码 89
4.3.6 事件逻辑处理模块 91
4.4 UGUI核心源码剖析 91
4.4.1 UGUI核心源码结构 91
4.4.2 Culling模块 91
4.4.3 Layout模块 93
4.4.4 MaterialModif?iers、Specialized-Collections和Utility 94
4.4.5 VertexModif?iers 95
4.4.6 核心渲染类 96
4.5 快速构建一个简单易用的UI框架 101
4.6 UI优化 107
4.6.1 UI动静分离 108
4.6.2 拆分过重的UI 108
4.6.3 UI预加载 109
4.6.4 UI图集Alpha分离 110
4.6.5 UI字体拆分 111
4.6.6 Scroll View优化 112
4.6.7 网格重构的优化 113
4.6.8 UI展示与关闭的优化 114
4.6.9 对象池的运用 114
4.6.10 UI贴图设置的优化 115
4.6.11 内存泄漏 117
4.6.12 针对高低端机型的优化 123
4.6.13 UI图集拼接的优化 126
4.6.14 GC的优化 127
第5章 3D模型与动画 134
5.1 美术资源规范 134
5.2 合并3D模型 141
5.2.1 网格模型的基础知识 141
5.2.2 动态批处理 143
5.2.3 静态批处理 144
5.2.4 自己编写合并3D模型的程序 145
5.3 状态机 147
5.3.1 如何用状态机模拟人物行为动作 147
5.3.2 在游戏的人物行为动作中使用状态机 148
5.3.3 在游戏项目中使用状态机的地方 148
5.4 3D模型的变与换 152
5.4.1 切割模型 154
5.4.2 扭曲模型 156
5.4.3 简化模型 157
5.4.4 蒙皮骨骼动画 159
5.4.5 人物3D模型动画换皮换装 165
5.4.6 捏脸 167
5.4.7 动画优化 169
5.5 资源的加载与释放 176
第6章 网络通信 183
6.1 TCP与UDP 183
6.1.1 TCP和UDP简介 183
6.1.2 UDP的特点 185
6.1.3 是用TCP还是用UDP 186
6.2 C#实现TCP 187
6.2.1 程序实现TCP长连接 187
6.2.2 TCP的API库 187
6.2.3 线程锁 188
6.2.4 缓冲队列 188
6.2.5 双队列结构 190
6.2.6 发送数据 191
6.2.7 协议数据定义标准 192
6.2.8 断线检测 195
6.3 C#实现UDP 196
6.3.1 实现UDP 196
6.3.2 连接确认机制 196
6.3.3 数据包校验与重发机制 199
6.3.4 丢包问题分析 201
6.4 封装HTTP 202
6.4.1 HTTP协议原理 202
6.4.2 HTTP1.0、HTTP1.1、HTTP2.0简述 204
6.4.3 在Unity3D中的HTTP封装 206
6.4.4 多次请求时连续发送HTTP请求引起的问题 209
6.5 网络数据协议原理 222
6.5.1 协议包的格式 222
6.5.2 JSON 223
6.5.3 自定义二进制数据流协议格式 224
6.5.4 MessagePack 226
6.5.5 Protobuf 229
6.5.6 限定符的规则 231
6.5.7 Protobuf的原理:序列化和反序列化 232
6.5.8 Protobuf更改数据结构后的兼容问题 235
6.5.9 Protobuf的优点 236
6.5.10 Protobuf的不足 237
6.6 网络同步解决方案 237
6.6.1 状态同步法 237
6.6.2 实时广播同步法 239
6.6.3 帧同步 240
6.6.4 同步快进 242
6.6.5 精度问题 243
6.6.6 同步锁机制 244
猜您喜欢