Unity3D高级编程:主程手记

Unity3D高级编程:主程手记_第1张图片

d9ee4bef6026a641f7202ff5ae63fb9c.png

导读:

Unity 3D在世界范围的使用非常广泛,是所有商业引擎中使用人数最高的一个。华章妹这里给大家介绍一本新书《Unity3D高级编程:主程手记》

2f8d484b94a6b04181fd80867432bb31.png

内容简介

本书是上市公司资深程序员呕心沥血之作,全面介绍了Unity3D游戏客户端架构,并深入剖析了游戏中的各个模块。全书共10章,每章都是一个独立的知识领域,由浅入深地讲解了游戏开发的各项技术,包括基础知识、游戏整体架构、模块,以及图形学和渲染等。

在讲解模块知识时,对其原理和技术要点进行了深入剖析,包括界面、模型动画、网络、AI、场景编辑、地图寻路等。在讲解过程中,不仅从表象到原理进行了层层拆解,还基于作者的实践经验阐述了从0到1进行游戏开发时可能会遇到的问题和相应的解决方案。

在对图形学、渲染进行介绍时,则给出了图形数学、图形学常用算法、渲染管线、渲染原理等相关知识,并为开发高性能游戏提供了案例。

本书几乎覆盖了 Unity3D游戏开发的所有技术要点,为的是让读者看到 Unity3D 游戏开发项目的技术全貌,进而对各项技术与知识点有更深层次的理解。

Unity3D高级编程:主程手记_第2张图片

本书特色

Unity3D高级编程:主程手记_第3张图片

专家推荐

Unity3D高级编程:主程手记_第4张图片

作者介绍

陆泽西 游戏业从业十多年的老兵,曾就职于盛大游戏、动视暴雪等公司,现在是某上市公司的高级工程师。研究方向为高性能游戏开发,长期专注于游戏客户端架构和引擎技术,负责过多个大型游戏的架构工作,擅长极限性能优化,拥有丰富的实战经验。乐于分享,撰写了大量关于Unity3D和游戏技术的文章。

Unity3D高级编程:主程手记_第5张图片

读者对象

从行业用户角度来看,本书适合以下读者阅读:

  • Unity3D程序员和爱好者

  • 游戏开发者和游戏前端主程

  • 虚拟现实项目的开发者

  • 技术美术工程师和爱好者

  • 致力于图形图像和引擎架构的程序员

  • 开设相关课程的院校

视频解读

目录

前 言

第1章软件架构  1

1.1 架构的意义  1

1.2 软件架构的思维方式  5

1.3 如何构建Unity3D项目  9

第2章C#技术要点  14

2.1Unity3D中C#的底层原理  14

2.2List底层源码剖析  17

2.3Dictionary底层源码剖析  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.2UGUI系统的原理及其组件使用  79

4.2.1UGUI系统的运行原理  79

4.2.2UGUI系统的组件  80

4.3UGUI事件模块剖析  82

4.3.1UGUI事件系统源码剖析  82

4.3.2输入事件源码  82

4.3.3事件数据模块  83

4.3.4输入事件捕获模块源码  84

4.3.5射线碰撞检测模块源码  89

4.3.6事件逻辑处理模块  91

4.4UGUI核心源码剖析  91

4.4.1UGUI核心源码结构  91

4.4.2Culling模块  91

4.4.3Layout模块  93

4.4.4MaterialModif?iers、Specialized-Collections和Utility  94

4.4.5VertexModif?iers  95

4.4.6核心渲染类  96

4.5快速构建一个简单易用的UI框架  101

4.6UI优化  107

4.6.1UI动静分离  108

4.6.2拆分过重的UI  108

4.6.3UI预加载  109

4.6.4UI图集Alpha分离  110

4.6.5UI字体拆分  111

4.6.6Scroll View优化  112

4.6.7网格重构的优化  113

4.6.8UI展示与关闭的优化  114

4.6.9对象池的运用  114

4.6.10UI贴图设置的优化  115

4.6.11内存泄漏  117

4.6.12针对高低端机型的优化  123

4.6.13UI图集拼接的优化  126

4.6.14GC的优化  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.43D模型的变与换  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.1TCP与UDP  183

6.1.1TCP和UDP简介  183

6.1.2UDP的特点  185

6.1.3是用TCP还是用UDP  186

6.2C#实现TCP  187

6.2.1程序实现TCP长连接  187

6.2.2TCP的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.3C#实现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.1HTTP协议原理  202

6.4.2HTTP1.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.2JSON  223

6.5.3自定义二进制数据流协议格式  224

6.5.4MessagePack  226

6.5.5Protobuf  229

6.5.6限定符的规则  231

6.5.7Protobuf的原理:序列化和反序列化  232

6.5.8Protobuf更改数据结构后的兼容问题  235

6.5.9Protobuf的优点  236

6.5.10Protobuf的不足  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

第7章游戏中的AI  245

7.1用状态机构建AI  245

7.2用行为树构建AI  251

7.2.1复合节点  252

7.2.2修饰节点  253

7.2.3条件节点  253

7.2.4行为节点  253

7.3非典型性AI  255

7.3.1可演算式AI  255

7.3.2博弈式AI  257

第8章地图与寻路  259

8.1A星算法及其优化  259

8.1.1长距离导航  262

8.1.2A星排序算法优化  264

8.1.3寻路期望值优化  265

8.1.4通过权重引导寻路方向  267

8.1.5拆分寻路区域  268

8.1.6A星算法细节优化  270

8.1.7寻路规则优化JPS  271

8.2  寻路网格的构建  275

8.2.1数组构建网格  275

8.2.2路点网格  277

8.2.3平面三角形网格  279

8.2.4多层级网格  282

8.2.5三角形网格中的A星算法  283

8.2.6体素化寻路网格  286

8.2.7RecastNavigation Navmesh  288

8.3地图编辑器  290

8.3.1地图编辑器的基本功能  290

8.3.2数据协议格式在编辑器中的选择  292

8.3.3地图加载方式  293

8.3.4地图九宫格  294

8.4地图的制作与优化  296

8.4.1地图的制作方式  296

8.4.2常规场景的性能优化  299

第9章渲染管线与图形学  306

9.1图形学基础  306

9.1.1向量的意义  307

9.1.2点积的几何意义  307

9.1.3叉乘的几何意义  308

9.1.4向量之间的投影  309

9.1.5矩阵的意义  310

9.1.6矩阵旋转、缩放、投影、镜像和仿射  312

9.1.7齐次坐标的平移矩阵  320

9.1.8如何理解四元数  321

9.2渲染管线  324

9.2.1OpenGL、DirectX图形接口  324

9.2.2渲染管线是什么  325

9.2.3混合  337

9.2.4渲染管线总结  341

第10章渲染原理与知识  343

10.1渲染顺序  343

10.2Alpha Test  345

10.3Early-Z GPU硬件优化技术  347

10.4Mipmap的原理  348

10.5显存的工作原理  350

10.6Filter滤波方式  351

10.7 实时阴影是如何生成的  354

10.8光照纹理烘焙原理  357

10.9GPU Instancing的来龙去脉  362

10.10 着色器编译过程  369

10.11 Projector投影原理  372

491fa38c538f6ec718c151177a567e28.gif

Unity3D高级编程:主程手记_第6张图片

扫码关注【华章计算机】视频号

每天来听华章哥讲书

9b297e5ca5d4e43177090185266d34ca.gif

更多精彩回顾

书讯 | 2月书讯(下)| 新年到,新书到!

书讯 | 2月书讯 (上)| 新年到,新书到!

资讯 | Python迎来31岁生日,蝉联年度编程语言排行榜冠军

书单 | 成为优秀Java开发者,我看了这几本书

干货 |一文带你掌握计算机体系结构核心内容

收藏 | 终于有人把大数据、机器学习、数据科学讲明白了

上新 | 深入浅出隐私计算:技术解析与应用实践

资讯 |云原生时代,阿里如何让Java冷启动提速两个数量级?

赠书 | 【第95期】东数西算是什么?如何实现东数西算?

Unity3D高级编程:主程手记_第7张图片

Unity3D高级编程:主程手记_第8张图片

点击阅读全文购买

你可能感兴趣的:(游戏,算法,图形学,python,人工智能)