图书目录

目录

第1章  了解开发环境 1

1.1  技术要求 1

1.2  Unity 2022入门 2

1.2.1  使用macOS 7

1.2.2  创建新项目 7

1.2.3  编辑器界面导航 9

1.3  在Unity中使用C# 11

1.3.1  使用C#脚本 11

1.3.2  介绍Visual Studio编辑器 12

1.3.3  同步C#文件 14

1.4  浏览技术文档 15

1.4.1  访问Unity的技术文档 15

1.4.2  查找C#资源 18

1.5  本章小结 19

1.6  小测验 —— 关于脚本 20

第2章  编程的基本构建块 21

2.1  定义变量 21

2.1.1  名字很重要 22

2.1.2  变量充当占位符 23

2.2  了解方法 26

2.2.1  方法驱使行为 26

2.2.2  方法也是占位符 27

2.3  类 29

2.3.1  一个常见的Unity类 30

2.3.2 类就像蓝图 30

2.3.3  类之间的通信 31

2.4  使用注释 32

2.4.1  单行注释 32

2.4.2  多行注释 32

2.4.3  添加注释 33

2.5  整合基本构建块 33

2.5.1  将脚本变成组件 34

2.5.2  来自MonoBehaviour的助力 36

2.6  本章小结 37

2.7  小测验——C#的基本构建块 37

第3章  深入了解变量、类型和方法 39

3.1  编写符合规范的C#代码 40

3.2  调试代码 41

3.3  深入了解变量 42

3.3.1  声明变量 42

3.3.2  使用访问修饰符 44

3.3.3  了解数据类型 46

3.3.4  命名变量 51

3.3.5  了解变量的作用域 52

3.4  运算符 53

3.5  定义方法 55

3.5.1  声明方法 56

3.5.2 命名约定 58

3.5.3 方法是逻辑上的绕行道 58

3.5.4  指定参数 59

3.5.5  指定返回值 60

3.5.6  使用返回值 61

3.6  本章小结 64

3.7  小测验——变量和方法 65

第4章  控制流和集合类型 67

4.1  选择语句 67

4.1.1  if-else 语句 68

4.1.2  switch语句 77

4.1.3  小测验1——if语句与逻辑运算符 82

4.2  初识集合 82

4.2.1  数组 82

4.2.2  列表 86

4.2.3  字典 89

4.2.4  小测验2—— 关于集合的一切 92

4.3  迭代语句 92

4.3.1  for循环 92

4.3.2  foreach循环 96

4.3.3  while 循环 98

4.3.4  超越无限 100

4.4  本章小结 101

第5章  使用类、结构体以及面向对象编程 103

5.1  什么是面向对象编程 104

5.2  定义类 104

5.2.1  实例化类对象 105

5.2.2  添加类字段 106

5.2.3  使用构造方法 107

5.2.4  声明类方法 110

5.3  声明结构体 111

5.4  了解引用类型和值类型 114

5.4.1  引用类型 114

5.4.2  值类型 115

5.5  植入面向对象的思维 116

5.5.1  封装 117

5.5.2  继承 118

5.5.3  组合 120

5.5.4  多态 121

5.6  在Unity中应用面向对象编程 122

5.6.1  对象是类的行动 123

5.6.2  访问组件 124

5.7  本章小结 128

5.8  小测验——面向对象编程的那些事 128

第6章  亲手实践Unity 129

6.1  游戏设计入门 129

6.1.1  游戏设计文档 130

6.1.2  Hero Born游戏单页文档 131

6.2  构建关卡 131

6.2.1  创建原始对象 132

6.2.2  用3D思维思考 134

6.2.3  材质 135

6.2.4  白盒 138

6.3  光照基础 147

6.3.1  创建光源 147

6.3.2  Light组件属性 148

6.4  在Unity中制作动画 149

6.4.1  使用代码创建动画 150

6.4.2  在Unity中使用Animation窗口创建动画 151

6.4.3  录制关键帧 154

6.4.4  曲线和切线 156

6.5  本章小结 158

6.6  小测验—— Unity的基本功能 159

第7章  角色移动、摄像机以及碰撞 161

7.1  管理玩家移动 161

7.2  使用Transform组件移动玩家 162

7.2.1  理解向量 164

7.2.2  获取玩家输入 166

7.2.3  角色移动 167

7.3  编写摄像机行为脚本 170

7.4  使用Unity物理系统 172

7.4.1  刚体运动 174

7.4.2  碰撞体和碰撞 178

7.4.3  使用碰撞触发器 181

7.4.4  物理系统综述 185

7.5  本章小结 186

7.6  小测验 —— 玩家控制和物理系统 186

第8章  游戏机制脚本编写 187

8.1  添加跳跃 187

8.1.1  枚举介绍 188

8.1.2  使用层遮罩 191

8.2  发射子弹 196

8.2.1  实例化对象 196

8.2.2  添加射击机制 198

8.2.3  管理对象堆积 201

8.3  创建游戏管理器 202

8.3.1  追踪玩家属性 202

8.3.2  get和set属性 204

8.3.3  更新道具收集 206

8.4  创建GUI 208

8.4.1  显示玩家数据 208

8.4.2  胜负条件 216

8.4.3  使用指令和命名空间暂停和重启游戏 221

8.5  本章小结 225

8.6  小测验——游戏机制 225

第9章  AI基础与敌人行为 227

9.1  在Unity中导航3D空间 227

9.1.1  导航组件 228

9.1.2  设置敌人代理 230

9.2  移动敌人代理 231

9.2.1  面向过程编程 231

9.2.2  引用巡逻点 232

9.2.3  移动敌人 234

9.3  敌人游戏机制 238

9.3.1  寻找和销毁:改变代理的目标 238

9.3.2  减少玩家生命值 240

9.3.3  检测子弹碰撞 241

9.3.4  更新游戏管理器 244

9.4  重构并保持“DRY” 246

9.5  本章小结 248

9.6  小测验——AI和导航 248

第10章  重睹类型、方法和类 249

10.1  再谈访问修饰符 249

10.1.1  常量和只读属性 250

10.1.2  使用static关键字 250

10.2  重睹方法 252

10.2.1  重载方法 252

10.2.2  ref参数 254

10.2.3  out参数 256

10.3  中级的面向对象编程 257

10.3.1  接口 257

10.3.2  抽象类 261

10.3.3  类的扩展 263

10.4  命名空间冲突和类型别名 266

10.5  本章小结 267

10.6  小测验——升级 268

第11章  特殊集合类型和LINQ 269

11.1  栈 269

11.1.1  出栈(Pop)和查看栈顶(Peek) 273

11.1.2  常用方法 274

11.2  队列 275

11.3  哈希集 277

11.4  关于中级集合的小结 279

11.5  用LINQ查询数据 280

11.5.1  LINQ基础 280

11.5.2  lambda表达式 283

11.5.3  链式查询 284

11.5.4  将数据转换为新类型 285

11.5.5  用可选语法化简 286

11.6  本章小结 288

11.7  小测验——中级的集合 288

第12章  保存、加载与数据序列化 289

12.1  数据格式 289

12.1.1 解构XML 290

12.1.2  解构JSON 291

12.2  了解文件系统 293

12.2.1  使用资产路径 295

12.2.2  创建或删除目录 297

12.2.3  创建、更新、删除文件 299

12.3  使用数据流 305

12.3.1  管理数据流资源 306

12.3.2  使用StreamWriter与StreamReader 306

12.3.3  创建一个XMLWriter 310

12.3.4  自动关闭数据流 313

12.4  数据序列化 314

12.4.1  序列化和反序列化XML 315

12.4.2  序列化和反序列化JSON 319

12.5  数据汇总 325

12.6  本章小结 326

12.7  小测验——数据管理 326

第13章  探索泛型、委托以及更多 327

13.1  泛型 327

13.1.1  泛型类 328

13.1.2  泛型方法 330

13.1.3  约束类型参数 333

13.1.4  向Unity对象添加泛型 336

13.2  委托行动 337

13.2.1  创建调试委托 337

13.2.2  将委托作为参数类型 339

13.3  触发事件 340

13.3.1 创建并调用事件 341

13.3.2  处理事件订阅 342

13.3.3  清理事件订阅 344

13.4  处理异常 345

13.4.1  抛出异常 345

13.4.2  使用try-catch语句 347

13.5  本章小结 350

13.6  小测验——中级 C# 350

第14章  旅程继续 351

14.1  有待更深入的知识 351

14.2  牢记面向对象编程 352

14.3  设计模式入门 353

14.4  走进Unity项目 353

14.5  本书未提及的Unity特性 354

14.6  下一步的学习 354

14.6.1  C#资源 354

14.6.2  Unity资源 355

14.6.3  Unity认证 355

14.7  英雄的试炼 —— 向全世界展示 356

14.8  本章小结 357

小测验答案 359