由于此商品库存有限,请在下单后15分钟之内支付完成,手慢无哦!
100%刮中券,最高50元无敌券,券有效期7天
活动自2017年6月2日上线,敬请关注云钻刮券活动规则更新。
如活动受政府机关指令需要停止举办的,或活动遭受严重网络攻击需暂停举办的,或者系统故障导致的其它意外问题,苏宁无需为此承担赔偿或者进行补偿。
[正版]Unity 3D脚本编程 使用C#语言开发跨平台游戏 Unity3D游戏开发入门 Unity程序设计 Unity
¥ ×1
店铺公告
为保障消费者合理购买需求及公平交易机会,避免因非生活消费目的的购买货囤积商品,抬价转售等违法行为发生,店铺有权对异常订单不发货且不进行赔付。异常订单:包括但不限于相同用户ID批量下单,同一用户(指不同用户ID,存在相同/临近/虚构收货地址,或相同联系号码,收件人,同账户付款人等情形的)批量下单(一次性大于5本),以及其他非消费目的的交易订单。 温馨提示:请务必当着快递员面开箱验货,如发现破损,请立即拍照拒收,如验货有问题请及时联系在线客服处理,(如开箱验货时发现破损,所产生运费由我司承担,一经签收即为货物完好,如果您未开箱验货,一切损失就需要由买家承担,所以请买家一定要仔细验货), 关于退货运费:对于下单后且物流已发货货品在途的状态下,原则上均不接受退货申请,如顾客原因退货需要承担来回运费,如因产品质量问题(非破损问题)可在签收后,联系在线客服。
目 录
第1 章 Hello Unity 3D .............................................................................................................. 1
1.1 Unity 3D 游戏引擎进化史 ................................................................................................ 1
1.2 Unity 3D 编辑器初印象 .................................................................................................... 5
1.2.1 Project 视图 ............................................................................................................................ 5
1.2.2 Inspector 视图......................................................................................................................... 8
1.2.3 Hierarchy 视图 ....................................................................................................................... 9
1.2.4 Game 视图 ............................................................................................................................ 10
1.2.5 Scene 视图 ............................................................................................................................ 12
1.2.6 绘图模式 .............................................................................................................................. 14
1.2.7 渲染模式 .............................................................................................................................. 16
1.2.8 场景视图控制 ...................................................................................................................... 17
1.2.9 Effects 菜单和Gizmos 菜单 ................................................................................................ 18
1.3 Unity 3D 的组成 .............................................................................................................. 18
1.4 为何需要游戏脚本 ......................................................................................................... 20
1.5 本章总结 ......................................................................................................................... 21
第2 章 Mono 所搭建的脚本核心基础 ..................................................................................... 22
2.1 Mono 是什么 ................................................................................................................... 22
2.1.1 Mono 的组成 ........................................................................................................................ 22
2.1.2 Mono 运行时 ........................................................................................................................ 23
2.2 Mono 如何扮演脚本的角色 ........................................................................................... 24
2.2.1 Mono 和脚本 ........................................................................................................................ 24
2.2.2 Mono 运行时的嵌入 ............................................................................................................ 26
2.3 Unity 3D 为何能跨平台?聊聊CIL .............................................................................. 38
2.3.1 Unity 3D 为何能跨平台 ....................................................................................................... 38
2.3.2 CIL 是什么 ........................................................................................................................... 40
2.3.3 Unity 3D 如何使用CIL 跨平台........................................................................................... 44
2.4 脚本的选择,C# 或 JavaScript ...................................................................................... 48
2.4.1 最熟悉的陌生人——UnityScript ........................................................................................ 48
2.4.2 UnityScript 与 JavaScript ..................................................................................................... 51
2.4.3 C#与UnityScript .................................................................................................................. 55
2.5 本章总结 ......................................................................................................................... 57
第3 章 Unity 3D 脚本语言的类型系统 .................................................................................... 58
3.1 C#的类型系统 ................................................................................................................. 58
3.2 值类型和引用类型 ......................................................................................................... 65
3.3 Unity 3D 脚本语言中的引用类型 .................................................................................. 73
3.4 Unity 3D 游戏脚本中的值类型 ...................................................................................... 90
3.4.1 Vector2、Vector3 以及Vector4 .......................................................................................... 90
3.4.2 其他常见的值类型 .............................................................................................................. 94
3.5 装箱和拆箱 ..................................................................................................................... 95
3.6 本章总结 ......................................................................................................................... 98
第4 章 Unity 3D 中常用的数据结构 ....................................................................................... 99
4.1 Array 数组 ..................................................................................................................... 100
4.2 ArrayList 数组 ............................................................................................................... 101
4.3 List
4.4 C#中的链表——LinkedList
4.5 队列(Queue
4.6 Hash Table(哈希表)和Dictionary
4.7 本章总结 ....................................................................................................................... 120
第5 章 在Unity 3D 中使用泛型 ............................................................................................ 121
5.1 为什么需要泛型机制 ................................................................................................... 121
5.2 Unity 3D 中常见的泛型 ................................................................................................ 124
5.3 泛型机制的基础 ........................................................................................................... 127
5.3.1 泛型类型和类型参数 ........................................................................................................ 128
5.3.2 泛型类型和继承 ................................................................................................................ 131
5.3.3 泛型接口和泛型委托 ........................................................................................................ 131
5.3.4 泛型方法 ............................................................................................................................ 136
5.4 泛型中的类型约束和类型推断 .................................................................................... 139
5.4.1 泛型中的类型约束 ............................................................................................................ 139
5.4.2 类型推断 ............................................................................................................................ 144
5.5 本章总结 ....................................................................................................................... 146
第6 章 在Unity 3D 中使用委托 ............................................................................................ 149
6.1 向Unity 3D 中的SendMessage 和BroadcastMessage 说拜拜 .................................... 150
6.2 认识回调函数机制——委托 ........................................................................................ 151
6.3 委托是如何实现的 ....................................................................................................... 154
6.4 委托是如何调用多个方法的 ........................................................................................ 160
6.5 用事件(Event)实现消息系统 .................................................................................. 164
6.6 事件是如何工作的 ....................................................................................................... 169
6.7 定义事件的观察者,实现观察者模式 ........................................................................ 172
6.8 委托的简化语法 ........................................................................................................... 177
6.8.1 不必构造委托对象 ............................................................................................................ 177
6.8.2 匿名方法 ............................................................................................................................ 178
6.8.3 Lambda 表达式 .................................................................................................................. 196
6.9 本章总结 ....................................................................................................................... 201
第7 章 Unity 3D 中的定制特性 ............................................................................................. 202
7.1 初识特性——Attribute ................................................................................................. 202
7.1.1 DllImport 特性 ................................................................................................................... 203
7.1.2 Serializable 特性 ................................................................................................................. 205
7.1.3 定制特性到底是谁 ............................................................................................................ 207
7.2 Unity 3D 中提供的常用定制特性 ................................................................................ 208
7.3 定义自己的定制特性类................................................................................................ 213
7.4 检测定制特性 ............................................................................................................... 216
7.5 亲手拓展Unity 3D 的编辑器 ....................................................................................... 217
7.6 本章总结 ....................................................................................................................... 227
第8 章 Unity 3D 协程背后的迭代器 ..................................................................................... 228
8.1 初识Unity 3D 中的协程 ............................................................................................... 228
8.1.1 使用StartCoroutine 方法开启协程 ................................................................................... 229
8.1.2 使用StopCoroutine 方法停止一个协程 ............................................................................ 233
8.2 使用协程实现延时效果................................................................................................ 234
8.3 Unity 3D 协程背后的秘密——迭代器 ........................................................................ 238
8.3.1 你好,迭代器 .................................................................................................................... 238
8.3.2 原来是状态机 .................................................................................................................... 242
8.3.3. 状态管理 ........................................................................................................................... 248
8.4 WWW和协程 ............................................................................................................... 253
8.5 Unity 3D 协程代码实例 ................................................................................................ 257
8.6 本章总结 ....................................................................................................................... 259
第9 章 在Unity 3D 中使用可空型 ........................................................................................ 260
9.1 如果没有值 ................................................................................................................... 260
9.2 表示空值的一些方案 ................................................................................................... 261
9.2.1 使用魔值 ............................................................................................................................ 261
9.2.2 使用标志位 ........................................................................................................................ 261
9.2.3 借助引用类型来表示值类型的空值 ................................................................................. 265
9.3 使用可空值类型 ........................................................................................................... 267
9.4 可空值类型的简化语法................................................................................................ 272
9.5 可空值类型的装箱和拆箱 ............................................................................................ 278
9.6 本章总结 ....................................................................................................................... 280
第10 章 从序列化和反序列化看Unity 3D 的存储机制 ......................................................... 281
10.1 初识序列化和反序列化.............................................................................................. 281
10.2 控制类型的序列化和反序列化 .................................................................................. 290
10.2.1 如何使类型可以序列化 .................................................................................................. 290
10.2.2 如何选择序列化的字段和控制反序列化的流程 ........................................................... 292
10.2.3 序列化、反序列化中流的上下文介绍及应用 ............................................................... 296
10.3 Unity 3D 中的序列化和反序列化 .............................................................................. 299
10.3.1 Unity 3D 的序列化概览 ................................................................................................... 299
10.3.2 对Unity 3D 游戏脚本进行序列化的注意事项 .............................................................. 302
10.3.3 如何利用Unity 3D 提供的序列化器对自定义类型进行序列化 .................................. 305
10.4 Prefab 和实例化之谜——序列化和反序列化的过程 ............................................... 309
10.4.1 认识预制体Prefab ........................................................................................................... 309
10.4.2 实例化一个游戏对象 ...................................................................................................... 311
10.4.3 序列化和反序列化之谜 .................................................................................................. 314
10.5 本章总结 ..................................................................................................................... 317
第11 章 移动平台动态读取外部文件 ................................................................................... 318
11.1 假如我想在编辑器里动态读取文件 .......................................................................... 318
11.2 移动平台的资源路径问题 .......................................................................................... 320
11.3 移动平台读取外部文件的方法 .................................................................................. 323
11.4 使用Resources 类加载资源 ....................................................................................... 330
11.5 使用WWW类加载资源 ............................................................................................ 332
11.5.1 利用WWW类的构造函数实现资源下载 ...................................................................... 332
11.5.2 利用 WWW.LoadFromCacheOrDownload 方法实现资源下载 ..................................... 333
11.5.3 利用WWWForm 类实现POST 请求 ............................................................................. 335
11.6 本章总结 ..................................................................................................................... 335
第12 章 在Unity 3D 中使用AssetBundle............................................................................ 336
12.1 初识AssetBundle ........................................................................................................ 336
12.2 使用AssetBundle 的工作流程 ................................................................................... 337
12.2.1 开发阶段 .......................................................................................................................... 337
12.2.2 运行阶段 .......................................................................................................................... 340
12.3 如何使用本地磁盘中的AssetBundle 文件................................................................ 344
12.4 AssetBundle 文件的平台兼容性 ................................................................................ 345
12.5 AssetBundle 如何识别资源 ........................................................................................ 345
12.6 本章总结 ..................................................................................................................... 346
第13 章 Unity 3D 优化 ......................................................................................................... 347
13.1 看看Unity 3D 优化需要从哪里着手 ......................................................................... 347
13.2 CPU 方面的优化 ......................................................................................................... 348
13.2.1 对DrawCall 的优化 ......................................................................................................... 348
13.2.2 对物理组件的优化 .......................................................................................................... 354
13.2.3 处理内存,却让CPU 受伤的GC................................................................................... 355
13.2.4 对代码质量的优化 .......................................................................................................... 356
13.3 对GPU 的优化 ............................................................................................................ 357
13.3.1 减少绘制的数目 .............................................................................................................. 358
13.3.2 优化显存带宽 .................................................................................................................. 358
13.4 内存的优化 ................................................................................................................. 359
13.4.1 Unity 3D 的内部内存 ....................................................................................................... 359
13.4.2 Mono 的托管内存 ............................................................................................................ 360
13.5 本章总结 ..................................................................................................................... 363
第14 章 Unity 3D 的脚本编译 .............................................................................................. 365
14.1 Unity 3D 脚本编译流程概览 ...................................................................................... 365
14.2 JIT 即时编译 ............................................................................................................... 368
14.2.1 使用编译器将游戏脚本编译为托管模块 ....................................................................... 368
14.2.2 托管模块和程序集 .......................................................................................................... 369
14.2.3 使用JIT 编译执行程序集的代码.................................................................................... 370
14.2.4 使用JIT 即时编译的优势 ............................................................................................... 371
14.3 AOT 提前编译 ............................................................................................................ 372
14.3.1 在Unity 3D 中使用AOT 编译 ........................................................................................ 372
14.3.2 iOS 平台和Full-AOT 编译 .............................................................................................. 373
14.3.3 AOT 编译的优势 ............................................................................................................. 374
14.4 谁偷了我的热更新?Mono、JIT 还是iOS ............................................................... 374
14.4.1 从一个常见的报错说起 .................................................................................................. 375
14.4.2 美丽的JIT ........................................................................................................................ 377
14.4.3 模拟JIT 的过程 ............................................................................................................... 378
14.4.4 iOS 平台的自我保护 ....................................................................................................... 381
14.5 Unity 3D 项目的编译与发布 ...................................................................................... 382
14.5.1 选择游戏场景和目标平台 .............................................................................................. 382
14.5.2 Unity 3D 发布项目的内部过程 ....................................................................................... 384
14.5.3 Unity 3D 部署到Android 平台 ........................................................................................ 384
14.5.4 Unity 3D 部署到iOS 平台 ............................................................................................... 386
14.6 本章总结 ..................................................................................................................... 389
内容介绍
本书以Unity 3D的跨平台基础Mono以及其游戏脚本语言C#为基础进行讲解。全面系统地剖析了Unity 3D的跨平台原理以及游戏脚本开发的特点。第1章主要介绍了Unity 3D引擎的历史以及编辑器的基本知识;第2章主要介绍了Mono,以及Unity 3D利用Mono实现跨平台的原理,并且分析了C#语言为何更加适合Unity 3D游戏开发;第3章到第10章主要介绍了Unity 3D游戏脚本语言C#在使用Unity 3D开发过程中的知识点,包括Unity 3D脚本的类型基础、数据结构、在Unity 3D脚本中使用泛型、使用委托和事件打造自己的消息系统、利用定制特性来拓展Unity 3D的编辑器、Unity 3D协程背后的秘密——迭代器以及可空类型和序列化在Unity 3D中使用的相关知识;第11章到第14章,则主要介绍了Unity 3D的资源管理以及优化和编译的内容。
亲,大宗购物请点击企业用户渠道>小苏的服务会更贴心!
亲,很抱歉,您购买的宝贝销售异常火爆让小苏措手不及,请稍后再试~
非常抱歉,您前期未参加预订活动,
无法支付尾款哦!
抱歉,您暂无任性付资格