欢迎阅读本书第2 版!在过去的20 年,实时3D 和游戏开发工具不断在进步,吸引着越来越多的人参与游戏开发,无论是大型3A 游戏还是个人利用业余时间开发的独立游戏。
我们很高兴有机会更新这本书,也为我们为这本书付出的心血而感到自豪。希望在你使用Unity 引擎进行游戏开发时,这本书能成为一个得力的助手。自读者2007 年我们开始使用Unity 以来,Unity 已经取得了长足的进步,使用时间越长,我们越容易挖掘出它的新用法和新的优势!这一切令人兴奋异常。相信我们,这是我们的亲身体验。
我们Secret Lab 工作室开发的大部分电子游戏都是用Unity 开发的。Secret Lab 的主要作品有:与澳大利亚广播公司、航空公司、博物馆和学校合作开发的多款少儿游戏、获得英国学院游戏奖(British Academy Games Adwards,BAFTA)和独立游戏节(Independent Games Festival,IGF)大奖的《林中之夜》(Night in the Woods,由Finji 发行)以及广受欢迎的Yarn Spinner 插件。我们开始接触Unity 以来,它就一直是我们创作路上不可或缺的伙伴。
这本书汇集了一系列“配方”,旨在解决Unity 开发过程中经常遇到的问题。虽然本书可能无法解答你对Unity 的所有疑问,但涵盖了日常游戏开发中需要完成的大部分任务。第2 版增加了大量新的内容,反映了Unity 自本书第1 版发布以来的诸多变化,并全面更新了所有相关内容。尽管Unity 的更新速度并不快,但保持走在技术的前沿仍然十分重要。
我们把自己初次使用Unity 时遇到的难题和困惑整理到本书的配方中。真心希望它们能够为你提供帮助。
现在正是使用Unity 的黄金时期。实时开发和游戏开发的世界日新月异,可以选择的工具和技术也达到了前所未有的水平。勇敢地迈出步伐,创造伟大的作品吧!
目标读者和写作风格
本书假设读者对C# 语言或其他类似语言(如C++ 语言、Java 语言、Go 语言、Swift 语言、Python 语言等)有一定的了解,但对Unity 一无所知。本书旨在成为读者的得力助手,帮助读者更快地掌握Unity 并开发出自己的游戏。
如果欣赏我们的写作风格,并希望深入学习更多与Unity 相关的知识,推荐阅读《Unity 手机游戏开发》(Mobile Game Development with Unity),这本书同样由O’Reilly 优秀的团队出版(https://oreil.ly/XO9Jf)。
本书的截图均来自Windows 系统,但书中讨论的内容普遍适用于Windows、macOS和Linux 等不同操作系统下的Unity 使用场景。
本书的结构
本书分为13 章。
• 第1 章“Unity 基础”,介绍使用Unity 时需要了解的基本概念,包括游戏对象、组件、场景以及如何使用Unity 编辑器。
• 第2 章“编写脚本”,讲解Unity 的脚本接口,我们通过这种方式来编写代码,实现项目功能。讲解了基础知识之后,本章接着介绍一系列实用示例,其中包括如何实现保存和加载系统、如何高效地处理对象以及如何以便于代码和Unity处理的方式存储数据。
• 第3 章“输入”,讲解如何获取用户的输入,如键盘输入、鼠标输入和游戏手柄输入。此外,本章还将探讨如何配置响应用户点击等输入事件的游戏对象。
• 第4 章“数学知识”,简要说明开发游戏时需要了解的一些数学概念,如向量、矩阵和四元数。本章还要介绍这些概念的一些实际应用,如检测一个游戏对象是否位于玩家前方。
• 第5 章“2D 图形”,探讨Unity 内置的2D 图形和物理系统。你将从中学习如何显示精灵(sprite),如何对它们进行排序以及如何实现它们之间的碰撞效果。
• 第6章“3D图形”,讲解Unity的材质和着色系统,包括材质和着色器的工作原理、如何在Unity 中创建着色器以及如何在场景中实现最佳视觉效果。
• 第7 章“3D 物理与角色控制”,说明如何利用Unity 的3D 物理系统来满足常见的游戏玩法需求,如拾取和投掷对象,以及创建玩家可以乘坐的移动平台。
• 第8 章“动画与运动”,介绍Unity 的动画系统,说明如何实现角色在不同动画状态之间的自然过渡以及如何将玩家的操作与角色动画结合起来。本章还要介绍Unity 的摄像机系统以及讲解如何使摄像机跟随目标移动。
• 第9 章“逻辑与游戏玩法”,专注于设计和创建游戏玩法。本章要涵盖许多常见的游戏玩法,如管理玩家的任务状态、监控赛车是否在违规抄近道以及管理游戏对象之间的伤害处理。
• 第10 章“行为、模拟和AI”,讲解如何赋予游戏角色智能,使其能够检测到视野中的玩家、自动导航、规避障碍物以及寻找藏身处。本章还要简要探讨如何使用Unity 进行模拟以及使用机器学习技术实现真正的人工智能。
• 第11 章“音频与音乐”,介绍Unity 中的音频系统。本章要从播放音频的基础知识讲起,然后逐步深入到更高级的功能,如将音频路由到不同的音频组以及在游戏角色说话时自动调整背景音乐的音量。
• 第12 章“Unity 的UI 系统”,介绍用于构建UI(用户界面)的工具。本章还要专门讲解如何通过扩展Unity 编辑器来创建自定义工具。
• 第13章“文件、网络和截图”,作为本书的最后一章,要探讨如何进行网络通信、如何从网上获取数据以及如何通过代码保存截图。
排版约定
本书使用的排版约定如下:
斜体
表示新术语、URL、电子邮件地址、文件名和文件扩展名
Constant width(等宽字体)
表示程序代码和段落内的程序元素,如变量名、函数名、数据库、数据类型、环境变量、语句和关键字等
Constant width bold(粗体等宽字体)
表示用户应该逐字键入的命令或其他文本
这个元素表示提示或建议。
这个元素表示一般性的附注。
这个元素表示警告或注意事项。
示例代码使用规范
如果想下载本书中的代码,请访问本书的GitHub 存储库(https://oreil.ly/unity-devcookbook-code)。我们还为本书专门创建了一个网页(https://oreil.ly/9b_pc),其中保存了书中的所有源代码以及其他资源。
这本书旨在帮助你学习。一般来说,除非计划大量复制或使用书中的代码,否则可以随意在自己的程序和文档中应用本书提供的示例代码,不需要事先征得我们的同意。举例来说,编写一个包含书中多个代码片段的程序不需要特别许可。但是,若要出售或分发O’Reilly 书籍中的示例代码,则务必事先获得我们的正式许可。引用本书和书中的示例代码来回答问题不需要特别许可,但是,如果在你的产品文档中大量引用本书的示例代码,就需要获得正式许可。
虽然不是强制性要求,但我们总是欢迎并感激任何对书籍归属权益的标注。书籍归属标注应包含书名、作者、出版社和ISBN。例如:“Unity Development Cookbook:Real-Time Solutions from Game Development to AI,作者:Paris Buttfield-Addison,Jon Manning 和Tim Nugent(O’Reilly 出版社)。2023 年版权所有,Secret Lab Pty.Ltd.,ISBN 978-1-098-11371-1。”
如果认为自己使用示例代码的方式可能超出合理使用范围或上述许可范围,请随时通过以下邮箱联系我们:permissions@oreilly.com。
O’Reilly 在线学习平台(O’Reilly Online Learning)
近40 年来,O’Reilly Media 致力于提供技术和商业培训、知识和卓越见解,来帮助众多公司取得成功。
我们拥有独一无二的专家和革新者组成的庞大网络,他们通过图书、文章、会议和我们的在线学习平台分享他们的知识和经验。O’Reilly 的在线学习平台允许你按需访问现场培训课程、深入的学习路径、交互式编程环境,以及O’Reilly 和200 多家其他出版商提供的大量文本和视频资源。有关的更多信息,请访问http://oreilly.com。
联系我们
请把对本书的评价和问题发给出版社。
美国:
O’Reilly Media, Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472
中国:
北京市西城区西直门南大街2号成铭大厦C座807室(100035)
奥莱利技术咨询(北京)有限公司
致谢
帕里斯想要感谢他伟大的母亲,如果没有她,他绝对无法像现在这样充满激情地开展每一项工作。此外,他还想感谢他了不起的妻子玛尔斯。她是他最坚强的支柱。
乔恩想要感谢他的母亲、父亲以及大家庭里所有的成员,感谢所有人的大力支持。
蒂姆想要感谢他的父母和家人,即使他的生活态度比较散漫,他们也始终表现出极大的包容和理解。
我们仨都要向我们的朋友瑞秋·鲁梅利奥蒂斯致以诚挚的感谢,她在过去10 年所提供的专业技术指导和宝贵建议对我们仨的写作事业有着不可估量的帮助。
感谢本书的编辑米歇尔·克罗宁。我们非常享受与她的合作,并且已经迫不及待地想开始写新书了。此外,还要特别感谢本书上一版的编辑杰夫·布莱尔。他情绪稳定,表达清晰,充满热情,与他的合作非常愉快,希望我们将来能够再次合作!
同样,要感谢我们在本书写作过程接触到的O’Reilly Media 的所有工作人员,他们无疑是各自领域的权威。O’Reilly Media 拥有众多才华横溢的员工,无论是正式员工、合同工还是其他相关人士,他们都表现出令人惊叹的专业水准。
特别感谢托尼·格雷和苹果大学联盟(Apple University Consortium,AUC),他们为我们及这里提及的其他人员提供了巨大的支持。如果没有他们,这本书将不会诞生。听说托尼现在也踏上了写作的道路——不好意思,提前剧透啦!
还要感谢尼尔·戈尔德斯坦,我们之所以踏上写作的道路,完全要归功于(或者说,归咎于)他。
还要感谢MacLab 的朋友们(他们知道自己是谁,并且他们仍在守望着海军上将Dolphin 的化神之路)以及克里斯托弗·吕格教授、莱昂妮·艾利斯副教授以及塔斯马尼亚大学的当前以及之前的工作人员,感谢他们的包容和支持。
感谢戴夫·J. 及其团队提供的咖啡。如果你哪天来到澳大利亚塔斯马尼亚州的霍巴特市,请务必在Yellow Bernard 咖啡店品尝一杯咖啡,那里有品质一流的咖啡。
感谢所有认真而专业的技术审阅人员。他们的建议带来了很大的帮助。
最后,感谢购买这本书的每一位读者朋友——在此深表感激!如果有任何反馈或建议,欢迎通过lab@secretlab.com.au 与我们联系,或在推特X 上找到我们@thesecretlab。