目 录
第Ⅰ部分 编程基础与C#
第1章 了解环境 3
1.1 一些基本前提 4
1.2 从Unity 2019开始 4
1.2.1 创建新项目 5
1.2.2 浏览编辑器 6
1.3 在Unity中使用C# 7
1.3.1 使用C#脚本 7
1.3.2 Visual Studio编辑器 9
1.3.3 同步C#文件 10
1.4 文档 10
1.4.1 访问Unity文档 10
1.4.2 查找C#资源 12
1.5 小测验——处理脚本 13
1.6 本章小结 14
第2章 编程的构成要素 15
2.1 定义变量 16
2.1.1 变量的名称很重要 16
2.1.2 将变量作为占位符 17
2.2 疯狂的方法 19
2.2.1 方法驱动行为 20
2.2.2 方法也是占位符 20
2.3 类的引入 22
2.3.1 一直在使用类 22
2.3.2 日常蓝图 22
2.4 注释是关键 23
2.5 将脚本附加到游戏对象上 25
2.5.1 脚本成为组件 25
2.5.2 来自MonoBehaviour的帮助 26
2.6 类与组件通信 26
2.7 小测验——C#的构成要素 27
2.8 本章小结 27
第3章 深入研究变量、类型和方法 29
3.1 编写正确的C#代码 29
3.2 简单的调试技术 31
3.3 变量的语法 31
3.3.1 声明类型和值 32
3.3.2 仅声明类型 32
3.4 访问修饰符 33
3.5 使用类型 34
3.5.1 通用内置类型 34
3.5.2 类型转换 37
3.5.3 推断式声明 37
3.5.4 自定义类型 38
3.5.5 类型综述 38
3.6 命名变量 38
3.7 变量的作用域 39
3.8 运算符 40
3.9 小测验——变量和类型 42
3.10 定义方法 42
3.11 指定参数 46
3.12 指定返回值 47
3.13 常见的Unity方法 50
3.13.1 Start方法 50
3.13.2 Update方法 50
3.14 小测验——理解方法 51
3.15 本章小结 51
第4章 流程控制与集合类型 53
4.1 选择语句 54
4.1.1 if-else语句 54
4.1.2 switch语句 60
4.1.3 小测验——if语句、逻辑非运算符和AND/OR逻辑运算符 64
4.2 集合一览 64
4.2.1 数组 64
4.2.2 列表 66
4.2.3 字典 68
4.2.4 小测验——关于集合的一切 71
4.3 迭代语句 71
4.3.1 for循环 72
4.3.2 foreach循环 74
4.3.3 while循环 76
4.3.4 超越无限 78
4.4 本章小结 78
第5章 使用类、结构体和OOP 79
5.1 定义类 80
5.1.1 基本语法 80
5.1.2 实例化类对象 81
5.1.3 添加类字段 81
5.1.4 使用构造函数 83
5.1.5 声明类方法 85
5.2 什么是结构体 86
5.3 类与结构体 88
5.3.1 引用类型 88
5.3.2 值类型 89
5.4 面向对象思想 90
5.4.1 封装 91
5.4.2 继承 92
5.4.3 组合 94
5.4.4 多态 95
5.4.5 OOP总结 96
5.5 在Unity中使用OOP 96
5.5.1 对象是集合起来的行为 96
5.5.2 获取组件 97
5.6 小测验——OOP的相关内容 101
5.7 本章小结 101
第Ⅱ部分 在Unity中编写游戏机制
第6章 亲自上手使用Unity 105
6.1 游戏设计入门 106
6.1.1 游戏设计文档 106
6.1.2 Hero Born游戏的单页文档 107
6.2 构建关卡 107
6.2.1 创建基本图形 108
6.2.2 在三维中思考 109
6.2.3 材质 110
6.2.4 白盒环境 112
6.3 光照基础 118
6.3.1 创建光源 118
6.3.2 Light组件的属性 119
6.4 在Unity中制作动画 120
6.4.1 创建动画片段 120
6.4.2 记录关键帧 122
6.4.3 曲线与切线 124
6.5 粒子系统 125
6.6 小测验——基本的Unity功能 127
6.7 本章小结 127
第7章 移动、相机控制与碰撞 129
7.1 移动玩家 129
7.1.1 玩家对象的创建 130
7.1.2 理解向量 131
7.1.3 获取玩家输入 133
7.2 相机跟随 136
7.3 使用Unity的物理系统 138
7.3.1 刚体运动 140
7.3.2 碰撞体和碰撞 143
7.3.3 使用碰撞体触发器 147
7.3.4 总结 150
7.4 小测验——玩家控制与物理系统 150
7.5 本章小结 150
第8章 编写游戏机制 153
8.1 添加跳跃 154
8.1.1 了解枚举 154
8.1.2 使用层遮罩 157
8.2 发射投射物 162
8.2.1 实例化对象 163
8.2.2 管理游戏对象的创建 166
8.3 游戏管理器 168
8.3.1 维护玩家属性 168
8.3.2 get和set属性 169
8.4 精益求精 173
8.4.1 图形用户界面 174
8.4.2 胜败条件 177
8.4.3 使用预编译指令和命名空间 180
8.5 小测验——游戏机制 182
8.6 本章小结 183
第9章 人工智能基础和敌人行为 185
9.1 Unity导航系统 186
9.2 移动敌人代理 189
9.3 敌人游戏机制 197
9.4 重构代码以避免代码重复 205
9.5 小测验——人工智能和导航系统 206
9.6 本章小结 207
第Ⅲ部分 提升你的C#代码
第10章 回顾类型、方法和类 211
10.1 访问修饰符再探 211
10.1.1 常量和只读属性 212
10.1.2 使用static关键字 212
10.2 方法再探 215
10.2.1 方法重载 215
10.2.2 ref参数 217
10.2.3 out参数 219
10.3 OOP 回顾 220
10.3.1 接口 220
10.3.2 抽象类 223
10.3.3 类的扩展 224
10.3.4 命名空间回顾 227
10.4 小测试——提升 228
10.5 本章小结 228
第11章 探索泛型、委托等 229
11.1 泛型介绍 229
11.1.1 泛型对象 230
11.1.2 泛型方法 232
11.1.3 约束类型参数 235
11.2 委托行为 236
11.2.1 基本语法 236
11.2.2 将委托作为参数类型 239
11.3 发送事件 241
11.3.1 基本语法 241
11.3.2 处理事件订阅 243
11.4 异常处理 245
11.4.1 抛出异常 245
11.4.2 使用try-catch语句 248
11.5 初步了解设计模式 251
11.6 小测验:C#中级主题 252
11.7 本章小结 252
第12章 旅行继续 253
12.1 有待深入 253
12.2 记住面向对象编程 254
12.3 了解Unity项目 255
12.4 开展进一步学习 255
12.4.1 C#资源 256
12.4.2 Unity资源 256
12.4.3 Unity认证 256
12.5 本章小结 257
附录部分(请扫描封底二维码获取)
附录A 完整的游戏代码文件
附录B 辅助类
附录C 小测验答案