新書推薦:
《
拯救免疫失衡
》
售價:NT$
254.0
《
收尸人
》
售價:NT$
332.0
《
大模型应用开发:RAG入门与实战
》
售價:NT$
407.0
《
不挨饿快速瘦的减脂餐
》
售價:NT$
305.0
《
形而上学与存在论之间:费希特知识学研究(守望者)(德国古典哲学研究译丛)
》
售價:NT$
504.0
《
卫宫家今天的饭9 附画集特装版(含漫画1本+画集1本+卫宫士郎购物清单2张+特制相卡1张)
》
售價:NT$
602.0
《
化妆品学原理
》
售價:NT$
254.0
《
万千教育学前·与幼儿一起解决问题:捕捉幼儿园一日生活中的教育契机
》
售價:NT$
214.0
|
編輯推薦: |
Unity能够为游戏行为和游戏机制编写自定义的C#脚本,该能力使Unity更加强大,这也是本书可以为编程新手提供帮助之处。
哈里森 ? 费隆(Harrison Ferrone)在这部畅销书的第7版中,通过在Unity中构建一款有趣且可玩的游戏原型的方式,引导读者从零了解C#语言和编程的每个组成
部分。
本书将讲解面向对象编程(OOP)的基础、C#的基本概念以及如何使用Unity引擎,并通过大量的代码示例、练习和提示说明帮助读者悟透本书内容,提高实战能力。
读者将通过编写C#脚本实现简单的游戏机制、执行过程化编程,并通过引入智能敌人和可造成伤害的投射物来为游戏增加复杂度。伴随着每个章节的学习,读者将探索Unity游戏开发的基础知识,包括游戏设计、光照基础、玩家移动、摄像机控制、碰撞等。
|
內容簡介: |
主要内容:
● 解构并理解编程的基础知识
● 通过代码示例全面了解面向对象编程以及它是如何在C#中应用的跟随简单的步骤和示例在Unity中创建和实现C#脚本
● 使用接口、抽象类和类扩展将代码分割成可以灵活复用的构建块
● 掌握游戏设计文档的基础知识,进行关卡搭建、添加光照和简单的对象动画
● 使用C#创建简单的游戏机制,例如实现玩家控制器和射击机制
● 熟悉堆栈、队列、异常处理、错误处理等其他C#核心概念
● 处理文本、XML以及JSON数据以保存和加载游戏数据
|
關於作者: |
Harrison Ferrone是土生土长的芝加哥人,他经常为LinkedIn和Pluralsight创建教学内容,并担任Ray Wenderlich网站的技术编辑,曾为Microsoft的混合现实团队编写技术文档。
在科罗拉多大学博尔德分校和芝加哥哥伦比亚学院求学时,Harrison Ferrone撰写过多篇引发关注的论文。作为iOS开发人员,在为一家初创公司和另一家名列《财富》500强的公司工作数年后,Harrison Ferrone选择从事教育事业。
|
目錄:
|
第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
|
內容試閱:
|
Unity 是世界上最受欢迎的游戏引擎之一,它适用于业余爱好者、专业3A工作室和电影制作公司。尽管Unity常以其作为3D工具的使用而闻名,但它还有诸多专有功能,为2D游戏、虚拟现实、影视后期制作、跨平台发布等内容生产提供支持。
开发者喜欢Unity的拖放界面和内置功能,但真正让Unity更上一层楼的,是因其能为行为和游戏机制编写自定义C#脚本。学习编写C#代码对于已熟悉其他语言、经验丰富的程序员来说可能不是一个巨大的障碍,但对于那些没有编程经验的人来说,可能会是令人生畏的。本书的意义在,将带你从零开始学习编程的和C#语言的基本知识,并同时在Unity中构建一个有趣且可玩的游戏原型。
本书读者对象
本书主要面向没有编程基础或C#语言经验的人群。然而,无论你是C#语言或其他编程语言的编程老手,还是编程初学者,只要想尝试在Unity中动手实践进行游戏开发,那么本书就正是你所需要的。
本书主要内容
第1章“了解开发环境”,介绍了Unity安装过程、Unity编辑器的主要功能、如何查阅C#和 Unity特定主题的文档。以及如何从Unity编辑器创建C#脚本,并初步了解如何使用Visual Studio,Visual Studio是进行所有的代码编辑工作的地方。
第2章“编程的基本构建块”,从列举编程的原子级概念开始,将变量、方法和类与日常生活中的事物联系起来。然后,介绍了简单的调试技巧、如何进行正确的格式设置和注释,以及Unity是如何将C#脚本转换为组件的。
第3章“深入了解变量、类型和方法”,在第2章的基础上进行更深入的讲解,内容包括C#的数据类型、命名规则、访问修饰符等其他编程基础内容。还介绍了如何更有效地编写方法、使用参数和返回类型。最后,对属于MonoBehaviour类的标准Unity方法进行了概述。
第4章“控制流和集合类型”,介绍了在代码中做决策的常用方法,包括if-else和switch语句。然后介绍了如何使用数组、列表和字典,并结合迭代语句来循环遍历集合类型。在本章的最后,介绍了条件循环语句和一个称为枚举的特殊C#数据类型。
第5章“使用类、结构体以及面向对象编程”,在本章首次接触如何构建和实例化类和结构体。还介绍创建构造函数、添加变量和方法的基本步骤,以及如何使用子类和继承的基础知识。最后,全面诠释了面向对象编程及其在C#中的应用。
第6章“亲手实践Unity”,标志着我们从C#语法进入游戏设计、关卡构建和Unity特色工具的世界。首先从了解游戏设计文档的基础知识开始,然后进行游戏关卡的几何布局,并添加光照和简单的粒子系统。
第7章“角色移动、摄像机以及碰撞”,讲解了使玩家对象移动和设置第三人称摄像机的不同方法,还介绍了如何通过Unity物理引擎获得更逼真的运动效果,如何使用碰撞体组件以及如何捕获场景中的交互。
第8章“游戏机制脚本编写”,介绍了游戏机制的概念以及如何有效地实现游戏机制。从添加简单的跳跃动作开始,然后创建射击机制,并基于前几章的代码添加处理道具收集的逻辑。
第9章“AI基础与敌人行为”,简要概述了游戏中的人工智能以及应用于Hero Born示例中的相关概念。涵盖的主题包括Unity中的地图导航、使用关卡几何结构和导航网格、智能代理,以及敌人自动移动等。
第10章“重睹类型、方法和类”,更深入地讲解了有关数据类型、中级的方法特性以及可用于更复杂类的附加行为。本章带领读者进一步了解C#语言的功能多样性和广度。
第11章“特殊集合类型和LINQ”,深入探讨了栈、队列和哈希集,以及它们分别适合的不同开发场景。此外,本章还探讨了如何使用LINQ(语言集成查询)对数据集合进行过滤、排序、变换等。
第12章“保存、加载与数据序列化”,着重介绍了如何处理游戏信息。话题涵盖了如何操作文件系统,以及如何创建、删除、更新文件等。此外还介绍了如何处理如XML、JSON、二进制数据等不同的数据类型,并在最后实践部分讨论如何将C#对象直接序列化为对应的数据格式。
第13章“探索泛型、委托以及更多”,详细介绍了C#语言的中级特性以及如何在实战中应用它们。从泛型编程的概述开始,逐步介绍了委托、事件和异常处理等概念。
第14章“旅程继续”,回顾了整本书中所学的主要主题,并提供了进一步学习C#和Unity的资源。这些资源包括在线阅读材料、认证信息和一些推荐的视频教程频道。
如何充分地利用好本书
为了能在即将到来的C#和Unity旅程中获得最大收益,你唯一需要的是保持好奇心和学习意愿。话虽如此,如果你希望巩固所学知识,那么完成所有的代码练习、“英雄的试炼”和“小测验”等部分是必须的。最后,在继续学习新知识之前,重温已学过的知识点或整个章节来刷新或巩固理解不失为一个好主意。毕竟,在不稳定的地基上建造房子是没有意义的。
此外,还需要在计算机上安装当前版本的Unity——建议使用2022或更新版本。所有代码示例均已在Unity 2022.1上进行了测试,它们应该可以在未来的版本中正常运行。
本书涉及的软件和硬件
Unity 2022.1 或更高版本
Visual Studio 2019 或更高版本
C# 8.0 或更高版本
在开始之前,请参考以下链接,检查计算机设置是否满足Unity的系统要求:https://docs.unity3d.com/2022.1/Documentation/Manual/system-requirements.html。
本书的代码库和彩图可扫描封底二维码下载。
|
|