第1章  Unity基础    1
         1.1  初识游戏引擎和Unity    2
         1.2  运行Unity    3
         1.2.1  Unity的版本    3
         1.2.2  下载并安装Unity    4
         1.2.3  在线激活Unity    4
         1.2.4  运行示例工程    4
         1.3  创建一个Hello World程序    7
         1.3.1  安装Visual Studio    8
         1.3.2  编写脚本    8
         1.3.3  编译输出    10
         1.4  调试程序    11
         1.4.1  显示Log    11
         1.4.2  在Visual Studio中设置断点    11
         1.5  Unity脚本基础    12
         1.5.1  Script(脚本)组件    12
         1.5.2  脚本的执行顺序    13
         1.5.3  脚本的序列化    14
         1.5.4  组件式编程    15
         1.5.5  协程编程    16
         1.6  预置文件Prefab和资源管理    17
         1.6.1  创建Prefab    17
         1.6.2  Unity资源包    18
         1.6.3  管理Unity插件    18
         1.7  读取资源和实例化    19
         1.7.1  在脚本中创建一个Game Object    19
         1.7.2  通过序列化方式引用资源    19
         1.7.3  通过IO方式读取资源    20
         1.8  保存工程    20
         1.9  时间和动画    21
         1.10  小结    21
         第2章  太空射击游戏    23
         2.1  游戏介绍    24
         2.1.1  游戏操作    24
         2.1.2  主角和敌人    24
         2.1.3  游戏UI    24
         2.2  导入美术资源    24
         2.3  创建场景    25
         2.3.1  创建火星背景和星空动画    26
         2.3.2  设置摄像机和灯光    30
         2.4  创建主角    31
         2.4.1  创建脚本    32
         2.4.2  控制飞船移动    33
         2.4.3  创建子弹    35
         2.4.4  创建子弹Prefab    36
         2.4.5  发射子弹    37
         2.5  创建敌人    38
         2.6  物理碰撞    39
         2.6.1  添加碰撞体    39
         2.6.2  触发碰撞    40
         2.7  高级敌人    43
         2.7.1  创建敌人    43
         2.7.2  发射子弹    44
         2.8  声音与特效    46
         2.9  敌人生成器    48
         2.10  游戏UI和战斗管理    50
         2.10.1  创建显示得分的UI界面    50
         2.10.2  创建显示游戏失败的UI界面    51
         2.10.3  编写脚本    52
         2.11  关卡跳转    54
         2.12  用鼠标控制主角    56
         2.13  精确的碰撞检测    58
         2.14  自动创建Prefab    60
         2.15  发布游戏    62
         2.16  使用PoolManager创建对象池    64
         2.17  小结    66
         第3章  第一人称射击游戏    68
         3.1  策划    69
         3.1.1  游戏介绍    69
         3.1.2  UI界面    69
         3.1.3  主角    69
         3.1.4  敌人    69
         3.2  游戏场景    69
         3.3  主角    70
         3.3.1  角色控制器    70
         3.3.2  摄像机    72
         3.3.3  武器    73
         3.4  敌人    74
         3.4.1  寻路    74
         3.4.2  设置动画    76
         3.4.3  行为    77
         3.5  UI界面    80
         3.6  交互    84
         3.6.1  主角的射击    84
         3.6.2  敌人的进攻与死亡    86
         3.7  出生点    88
         3.8  小地图    90
         3.9  小结    93
         第4章  塔防游戏    94
         4.1  策划    95
         4.1.1  场景    95
         4.1.2  摄像机    95
         4.1.3  胜负判定    95
         4.1.4  敌人    95
         4.1.5  防守单位    95
         4.1.6  UI界面    95
         4.2  地图编辑器    96
         4.2.1  “格子”数据    96
         4.2.2  在Inspector窗口添加自定义UI
         控件    98
         4.2.3  创建一个自定义窗口    100
         4.3  游戏场景    102
         4.4  制作UI    103
         4.5  创建游戏管理器    105
         4.6  摄像机    109
         4.7  路点    111
         4.8  敌人    115
         4.9  敌人生成器    118
         4.9.1  创建敌人生成器    118
         4.9.2  遍历敌人    121
         4.10  防守单位    121
         4.11  生命条    130
         4.12  小结    132
         第5章  2D游戏    133
         5.1  Unity 2D系统简介    134
         5.2  创建Sprite    134
         5.2.1  使用SpriteEditor创建Sprite    134
         5.2.2  使用SpritePacker创建Sprite    136
         5.2.3  图层排序    137
         5.2.4  Sprite边框和重复显示    138
         5.3  动画制作    138
         5.3.1  序列帧动画    138
         5.3.2  使用脚本实现序列帧动画    140
         5.3.3  骨骼动画    141
         5.4  2D物理    142
         5.5  捕鱼游戏    146
         5.5.1  游戏玩法    146
         5.5.2  准备2D资源    146
         5.5.3  创建鱼    148
         5.5.4  创建鱼群生成器    150
         5.5.5  创建子弹和大炮    151
         5.5.6  物理碰撞    153
         5.6  2D材质    154
         5.6.1  修改Sprite颜色    154
         5.6.2  自定义的黑白效果材质    155
         5.7  小结    155
         第6章  与Web服务器的交互    156
         6.1  Web服务器简介    157
         6.2  在Windows上安装部署Apache    158
         6.2.1  安装Apache    158
         6.2.2  Apache常用命令    159
         6.2.3  安装MySQL    159
         6.2.4  安装PHP    161
         6.2.5  安装Redis    162
         6.3  PHP开发环境    163
         6.3.1  第一个PHP程序    163
         6.3.2  调试PHP代码    164
         6.3.3  PHP基本语法    165
         6.4  WWW基本应用    167
         6.4.1  创建简单的UI界面    167
         6.4.2  GET请求    168
         6.4.3  POST请求    169
         6.4.4  上传下载图片    170
         6.4.5  下载声音文件    171
         6.5  分数排行榜    172
         6.5.1  创建数据库    172
         6.5.2  创建PHP脚本    173
         6.5.3  上传下载分数    175
         6.5.4  使用Redis缓存数据    177
         6.6  MD5验证    179
         6.7  小结    180
         第7章  TCP UDP实例    181
         7.1  网络开发简介    182
         7.2  简单的网络通信程序    184
         7.2.1  简单的TCP程序    184
         7.2.2  简单的UDP程序    186
         7.3  异步TCP网络通信    188
         7.3.1  创建数据包对象    188
         7.3.2  逻辑处理    190
         7.3.3  核心TCP网络功能    192
         7.3.4  创建聊天协议    196
         7.4  Unity聊天客户端    197
         7.5  聊天服务器端    200
         7.6  JSON.NET简介    205
         7.7  小结    206
         第8章  HTML5(WebGL)游戏移植    207
         8.1  关于HTML5和WebGL    208
         8.2  导出Unity游戏到WebGL平台    208
         8.2.1  导出WebGL游戏    208
         8.2.2  设置WebGL模板    210
         8.2.3  默认的index.html    210
         8.2.4  文件访问    211
         8.3  自定义Loading页面    212
         8.4  编写WebGL游戏插件    215
         8.4.1  访问JavaScript示例一    215
         8.4.2  访问JavaScript示例二    216
         8.5  在网页上保存游戏记录    217
         8.6  小结    217
         第9章  iOS游戏移植    218
         9.1  iOS简介    219
         9.2  软件安装    219
         9.3  申请开发权限    219
         9.4  设置iOS开发环境    219
         9.5  测试iOS游戏    222
         9.6  发布iOS游戏    223
         9.7  对接iOS原生语言    223
         9.7.1  在Xcode中创建Objectiv-C
         代码    223
         9.7.2  在Unity中引用Objectiv-C
         代码    226
         9.8  内消费    227
         9.9  本地存储位置    227
         9.10  使用命令行编译Xcode工程    228
         9.10.1  编译Xcode工程    228
         9.10.2  打包.ipa文件    228
         9.11  小结    228
         第10章  Android游戏移植    229
         10.1  Android简介    230
         10.2  安装Android SDK    230
         10.3  运行Android游戏    231
         10.3.1  准备测试环境    231
         10.3.2  设置Android游戏工程    232
         10.3.3  测试Android游戏    234
         10.3.4  发布Android游戏    234
         10.3.5  Obb数据包    236
         10.4  使用Android Studio    236
         10.4.1  Android Studio简介    237
         10.4.2  配置Android Studio    237
         10.4.3  创建Hello world程序    238
         10.5  从Unity到Android Studio    239
         10.5.1  创建Unity工程    240
         10.5.2  创建Android Studio工程    241
         10.5.3  查看Log    243
         10.5.4  发布程序    244
         10.6  使用脚本编译游戏    245
         10.6.1  在Unity中使用脚本导出
         Android工程    245
         10.6.2  使用Python脚本访问Unity
         命令行    247
         10.6.3  使用命令行编译Android Studio
         工程    248
         10.7  获得签名证书的sha1值    249
         10.8  导入库文件    250
         10.9  Plugins目录    251
         10.10  代码混淆    251
         10.11  百度地图实例    252
         10.11.1  导入百度地图SDK    252
         10.11.2  实现百度地图控件    253
         10.12  触屏操作    256
         10.13  AssetBundle    261
         10.13.1  创建AssetBundle资源    261
         10.13.2  下载、实例化AssetBundle
         资源    263
         10.13.3  批量创建AssetBundle    264
         10.14  小结    265
         第11章  Unity新GUI完全攻略    266
         11.1  Unity的GUI系统    267
         11.2  Canvas(画布)    267
         11.2.1  创建Canvas    268
         11.2.2  设置Canvas    268
         11.2.3  Canvas的屏幕适应模式    271
         11.2.4  Canvas层级内UI控件的
         排序    271
         11.2.5  Canvas的隐藏和显示    272
         11.2.6  查找UI层级下的子控件    272
         11.3  UI坐标对齐方式    272
         11.4  Text(文字)    273
         11.5  自定义字体    274
         11.5.1  创建字体贴图    274
         11.5.2  创建Shader    276
         11.6  Image(图像)    278
         11.6.1  创建Image控件    278
         11.6.2  设置Alpha    279
         11.6.3  设置Raycast Target    279
         11.6.4  设置UI图像为Sliced类型    280
         11.6.5  设置UI图像为Tiled类型    281
         11.6.6  设置UI图像为Filled类型    281
         11.6.7  Mask(蒙版)    282
         11.7  Button(按钮)控件    283
         11.7.1  创建按钮    283
         11.7.2  设置按钮状态变化    283
         11.7.3  在编辑器中设置按钮触发
         事件    284
         11.7.4  在脚本中定义按钮单击事件    285
         11.7.5  判断按压按钮事件    286
         11.8  Toggle(开关)控件    286
         11.8.1  创建Toggle控件    286
         11.8.2  Toggle组    287
         11.8.3  Toggle控件的脚本    288
         11.9  Raw Image控件    288
         11.10  Slider(滑块)控件    290
         11.10.1  创建Slider控件    290
         11.10.2  改变滑块大小    290
         11.10.3  使用脚本控制滑块    291
         11.11  Input Field(文本输入)控件    291
         11.12  Scroll View(卷轴视图)控件    292
         11.13  Dropdown(下拉列表)控件    294
         11.14  实用UI功能    295
         11.14.1  判断是否单击了UI    295
         11.14.2  拖动UI控件方法1    295
         11.14.3  拖动UI控件方法2    297
         11.14.4  在UI前面显示粒子特效    298
         11.15  使用插件DOTween制作动画    299
         11.15.1  在编辑器中设置DOTween
         动画    299
         11.15.2  在脚本中设置DOTween
         动画    300
         11.16  使用插件EnhancedScroller优化
         卷轴视图    301
         11.16.1  创建数据模型    302
         11.16.2  创建UI视图控制脚本    302
         11.16.3  创建控制器    302
         11.16.4  创建卷轴视图UI    303
         11.17  小结    305
         第12章  游戏开发中的美术工作
         流程    306
         12.1  Unity和艺术家    307
         12.2  视图操作捕捉    307
         12.3  光照和渲染系统    308
         12.3.1  光源类型    308
         12.3.2  渲染管道    309
         12.3.3  质量设置    310
         12.3.4  实时阴影    310
         12.3.5  环境光    312
         12.3.6  Fog(雾)    313
         12.3.7  直接照明与间接照明    314
         12.3.8  Lightmapping(光照贴图)    316
         12.3.9  环境反射采样    321
         12.3.10  光照采样    322
         12.4  色彩空间    324
         12.5  物理材质    326
         12.6  摄像机    329
         12.7  地形    331
         12.8  粒子特效    334
         12.9  物理设置    339
         12.10  游戏资源    341
         12.10.1  贴图    341
         12.10.2  在3ds Max中创建
         法线贴图    342
         12.10.3  3ds Max静态模型导出    343
         12.10.4  3ds Max动画导出    345
         12.10.5  Maya模型导出    345
         12.11  Unity两足动画系统    346
         12.11.1  修改3ds Max两足动画
         骨骼    347
         12.11.2  导入3ds Max两足角色到
         Unity    348
         12.11.3  导入角色动画到Unity    348
         12.11.4  表情动画    349
         12.11.5  动画控制器    350
         12.12  动画插件Skele    351
         12.13  电影片段制作    355
         12.14  美术资源的优化    357
         12.15  小结    358
         第13章  Behavior Designer——行为
         树AI    359
         13.1  行为树和AI    360
         13.1.1  行为树插件的安装    360
         13.1.2  简单的AI处理方式    360
         13.1.3  状态机AI处理方式    361
         13.1.4  Behavior Designer的行为树AI
         处理方式    362
         13.2  行为树任务    363
         13.2.1  任务返回值    363
         13.2.2  Action(动作)    363
         13.2.3  Composite(组合)    363
         13.2.4  Conditional(条件)    365
         13.2.5  Decorator(修饰)    366
         13.3  行为树实例    366
         13.3.1  主角的行为树    367
         13.3.2  游荡的敌人    372
         13.3.3  行为树的交互    373
         13.4  行为树系统扩展    376
         13.4.1  外部行为树    376
         13.4.2  自定义任务    377
         13.4.3  自定义共享数据类型    378
         13.4.4  在脚本中设置行为树    380
         13.4.5  在脚本中发送事件    380
         13.5  优化    380
         13.6  小结    381
         第14章  玩转PlayMaker    382
         14.1  关于PlayMaker    383
         14.1.1  优点和缺点    383
         14.1.2  安装    383
         14.2  PlayMaker的模块和工作机制    384
         14.2.1  有限状态机    384
         14.2.2  创建PlayMaker状态机    384
         14.2.3  State(状态)    385
         14.2.4  Event(事件)    385
         14.2.5  Action(动作)    386
         14.2.6  变量    387
         14.2.7  发送事件    388
         14.3  自定义Action    388
         14.4  小结    391
         第15章  VR虚拟现实开发    392
         15.1  VR简介    393
         15.2  设置HTC Vive开发环境    393
         15.3  VR操作示例    394
         15.3.1  创建VR场景    394
         15.3.2  手柄控制器    395
         15.4  小结    397
         第16章  AR增强现实开发    398
         16.1  AR和Vuforia    399
         16.2  创建Vuforia工程    399
         16.3  准备AR参考目标    401
         16.4  设置AR参考目标    402
         16.5  小结    404
         第17章  Shader编程与后期特效    405
         17.1  Shader简介    406
         17.2  渲染管线    406
         17.3  ShaderLab语言    407
         17.4  CG语言简介    409
         17.5  Vertex and Fragment Shader示例    409
         17.5.1  显示纹理和色彩    409
         17.5.2  使用通道表现多个纹理    412
         17.5.3  添加基本光照    414
         17.5.4  UV动画效果    415
         17.5.5  黑白效果    416
         17.5.6  简单描边效果    417
         17.5.7  Alpha透明效果    419
         17.6  屏幕特效示例    421
         17.7  后期特效    423
         17.8  小结    424
         第18章  动态编程和Lua    425
         18.1  动态语言简介    426
         18.2  动态读取程序集实现热更新    426
         18.2.1  创建.dll文件    426
         18.2.2  测试热更新.dll文件    427
         18.2.3  通过反射访问.dll文件    428
         18.3  Lua语言快速教程    429
         18.3.1  MoonSharp和Lua开发环境的
         安装    429
         18.3.2  Lua提供的类型    429
         18.3.3  Lua的判断和循环语句    430
         18.3.4  Lua的函数    431
         18.3.5  Lua的IO操作    431
         18.3.6  Lua的数组操作    432
         18.3.7  Lua的字符串操作    433
         18.3.8  Lua的协程    433
         18.4  Lua与Unity的交互    435
         18.4.1  在Unity中读取Lua代码    435
         18.4.2  将Unity 功能导入到
         Lua中    436
         18.5  Lua脚本的热更新    437
         18.6  小结    438
         附录A  C#语言    439
         A.1  C#基础    440
         A.1.1  C#简介    440
         A.1.2  运行控制台程序    440
         A.1.3  类型    441
         A.1.4  内置类型    441
         A.1.5  标识符    442
         A.1.6  语句和表达式    442
         A.1.7  变量和常量    443
         A.1.8  枚举    443
         A.1.9  数学操作符    443
         A.1.10  关系操作符    444
         A.1.11  逻辑操作符    444
         A.1.12  操作符优先级    445
         A.1.13  方法    445
         A.1.14  递归    446
         A.1.15  条件分支语句    446
         A.1.16  循环语句    447
         A.1.17  三元操作符    448
         A.1.18  预处理    448
         A.2  面向对象编程    449
         A.2.1  类    449
         A.2.2  this关键字    450
         A.2.3  封装    451
         A.2.4  继承与多态    452
         A.2.5  静态成员    454
         A.2.6  异常处理    455
         A.3  字符串    456
         A.4  数组    458
         A.4.1  创建数组    458
         A.4.2  遍历数组和迭代器    458
         A.5  基本I/O操作    460
         A.5.1  写文件    460
         A.5.2  读文件    461
         A.5.3  删除文件    462
         A.5.4  二进制读写    462
         A.6  泛型    463
         A.6.1  实现泛型的基本语法    463
         A.6.2  List的常见操作    464
         A.6.3  List的排序    465
         A.7  委托    468
         A.7.1  委托    468
         A.7.2  Lambda表达式    469
         A.7.3  泛型委托    470
         A.7.4  Action和Func    470
         A.8  反射和特性    471
         A.8.1  反射    471
         A.8.2  特性    471
         A.9  小结    472
         附录B  特殊文件夹    473
         附录C  Unity编辑器菜单中英文对照    475
      · · · · · ·     (
收起)