本书基于Unity2022版本,系统地介绍了Unity编辑器的基础界面、功能模块和界面设置等。工欲善其事,必先利其器。要想学好Unity,程序开发是必不可少的,所以本书详细介绍了C#语言的语法、条件语句、数组、集合、字符串类、文件的操作、常用算法和设计模式,以及Socket网络编程等技术。本书共设18章,系统地阐述了Unity程序开发的全流程设计体系。内容涵盖Unity引擎核心机制与C#语言编程基础两大维度,具体包括C#语言基础语法与编程范式、Unity界面交互设计原理、面向对象程序设计思想、常用数据结构与算法实现、文件系统操作、多媒体资源整合、数据库交互等核心模块。教学体系设计强调问题解决能力培养,通过典型案例解析引导读者掌握需求分析方法与编程实现路径。本书针对可视化界面开发这一实践性环节,采用渐进式教学法,将其与核心编程技术模块进行有机整合。通过构建“理论认知-算法设计-界面实现”的完整学习链路,既可以降低技术实现门槛,又能强化工程化思维培养。这种编排方式既能激发学习者的自主探究能力,也为教师开展项目驱动式教学提供了有效支撑,最终实现知识体系构建与实践能力提升的双重教学目标。本书不仅可以作为广大Unity初学者和对Unity感兴趣的读者的入门书籍,也可以作为从事Unity工作的开发人员的学习参考书,还可以作为开展Unity培训的学校或者机构的教材。
本书是一本专为初学者量身打造的Unity学习宝典!Unity作为当今游戏开发与交互设计领域的“超级引擎”,早已成为无数开发者的梦想起点。然而,面对复杂的引擎功能,新手往往无从下手。本书的出现,恰似一盏明灯,照亮了初学者的前行之路。书中内容层层递进,从Unity的基础架构与操作界面讲起,让读者迅速熟悉开发环境。随后,通过大量精心设计的实战项目,详细剖析了游戏开发的各个环节,从3D建模、动画制作到脚本编程,从场景搭建到用户交互设计,每一个知识点都配有清晰的步骤说明和详细的代码解析。书中还融入了丰富的微课视频资源,让抽象的概念变得直观易懂,让复杂的操作变得触手可及。无论是对游戏开发充满憧憬的初学者,还是希望在Unity领域深耕的技术人员,本书都能为你提供全方位的指导。它不仅是一本教程,更是一份通往Unity开发世界的通行证。翻开这本书,跟随它的步伐,你将踏上一段充满挑战与惊喜的Unity学习之旅,开启属于你的创意开发之旅!
前 言
随着互联网技术的不断发展,越来越多的人开始上网玩游戏,游戏开发人才急缺,如果你想成为 一名的游戏开发者,那么掌握 Unity 开发技术是不可或缺的一步。随着移动互联网的发展,移动端 游戏日益盛行,据了解,Unity 开发者超过 300 万,1/4 在中国,超过 5000 家游戏公司和工作室在 使用 Unity 开发。因此,学会 Unity 游戏开发,未来的职业发展将非常可观。
Unity 到底是什么?为何如此受欢迎、市场占有率如此之高?Unity 是专业的游戏引擎,能够创建 实时、可视化的 2D 和 3D 动画、游戏,被誉为 3D 手游的传奇。Unity 可以创建虚拟的现实空间,可以 让游戏玩家在虚拟的世界里尽情发挥,使心灵得到释放。近年游戏开发迅速崛起,发展为独具特色且 前景广阔的行业,市场需要以 Unity 技术作为支撑的游戏,企业需要 Unity 技术开发人才。因此,掌握 Unity 技术的人才需求量也会越来越大。 游戏产业作为一个新兴产业,从初期形成到如今的快速发展并迅速走向成熟时期,已经成为文化 娱乐产业、网络经济的重要组成部分。目前国内的游戏研发人才缺口巨大,对移动端技术开发人才的 需求非常迫切。
据数据显示,目前我国对中高级游戏开发工程师的需求在 10 万人以上,很多企业面临招不到 工程师的问题。据统计,游戏开发工程师平均月薪约为 20418 元。未来几年在多种因素的影响下,预计中国游戏市场研发人员的薪资将继续上涨。
本书编者具有多年一线开发经验,属于国内早期接触并开发 VR(Virtual Reality,虚拟现实)游戏 的一批人,团队开发的VR游戏已经进入场馆,反映良好。编者也是 CSDN 博客,主页在 CSDN 拥有 340 万访问量,让数百万 Unity 开发者受益。
与现有教材相比,本书具有以下特点。
1.注重培养全栈式技能
本书解决了现有 Unity 教材在全栈式开发方面的不足,首先从 C#基础讲起,但没有长篇大论地讲述,而是筛选出 C#中在 Unity 开发时要用到的技术;然后讲解 Unity 基础;最后在实战案例部分选择 了两个项目;一个是 Unity 游戏开发项目;另一个是数字孪生项目。
2.注重使用逐层深入的教学方式
本书通过逐层深入的教学方式,介绍开发流程和迭代过程,让读者知其然,也知其所以然。
3.注重使用实战案例
本书中每一章都提供了丰富的实例,这些实例大多来自编者多年的工作和应用软件开发实践,其中有些实例(如游戏、小程序等)具有较强的趣味性,可以激发读者对程序设计的兴趣。
本书资源及联系方式
为方便读者学习,本书提供案例源文件,读者请使用手机扫描资源包二维码,将资源下载到计算机中学习使用。
本书在写作过程中虽力求严谨细致,但由于时间与精力有限,书中疏漏之处在所难免。如果在阅读过程中有任何疑问,可以扫描技术支持二维码,与我们取得联系;也可以进入读者交流群,在群内交流学习,共同进步。
致谢
在编写本书时,编者秉持“做的 Unity 教科书”的精神,努力在有限的篇幅中展现更多对读者 有用的内容,期望可以带领读者快速入门 Unity。
编写本书占据了编者大部分的业余时间,因此本书的出版离不开编者家人的默默支持,在此向他们表示诚挚的感谢!同时,也感谢出版社编辑的细致审校工作,是他们的辛勤工作了本书的顺利 出版!
最后,祝愿各位读者,事业顺利,身体健康。
张 尧
2025 年 6 月
张尧,Unity3D领域优质创作者,精通C#,云原生入门级开发者认证,助理工程师,CSDN2022年度博客之星,CSDN博客,华为云云享,InfoQ博主,阿里云博客。
目 录
第 1 章 进入 Unity 的世界 ························ 1
视频讲解:13 分钟
1.1认识 Unity 引擎 ·································· 1
1.1.1Unity 简介 ······························· 2
1.1.2 Unity 发展史 ···························· 2
1.1.3 Unity 应用领域 ························· 4
1.1.4 Unity 从业介绍 ························· 7
1.2 Unity 配置与运行 ······························· 8
1.2.1 Unity 版本介绍 ························· 8
1.2.2 推荐使用的 Unity 版本··············· 12
1.2.3 Unity Hub 的下载与安装 ············ 12
1.2.4 Unity Hub 的授权与激活 ············ 14
1.2.5 Unity 的下载与安装 ·················· 16
1.2.6 Unity 中文汉化 ························ 18
1.3 运行 Unity 项目 ································· 19
1.3.1 新建 Unity 项目························ 19
1.3.2 打开 Unity 项目························ 20
1.3.3 运行 Unity 项目························ 21
1.3.4 新建 C#脚本 ···························· 22
1.3.5 初识 Unity 的 API ····················· 24
代码 1-1 Unity 编辑器 Awake 函数的使用 ······························ 24
代码1-2 Update、FixedUpdate、LateUpdate 函数的调用顺序 ····· 25
1.3.6 课后习题 ································ 26
1.4 Unity 编辑器简介 ······························ 26
1.4.1 窗口布局 ································ 26
1.4.2 菜单栏 ··································· 31
1.4.3 工具栏 ··································· 36
1.4.4 工作视图 ································ 37
1.4.5 重要概念 ································ 41
1.5 本章小结 ········································· 44
第 2 章 Unity 创建场景 ·························· 45
视频讲解:5 分钟 2.1 创建 2D 场景 ··································· 45
2.1.1 创建 2D 工程 ·························· 45
2.1.2 导入 2D 资源 ·························· 46
2.1.3 制作 2D 动画 ·························· 47
2.1.4 课后习题 ································ 50
2.2 创建 3D 场景 ··································· 50
2.2.1 创建 3D 工程 ·························· 50
2.2.2 创建 3D 模型 ·························· 51
2.2.3 导入 3D 资源 ·························· 51
2.2.4 课后习题 ································ 52
2.3 本章小结 ········································· 52
第 3 章 Unity 组件和预制体 ···················· 53
视频讲解:9 分钟
3.1 游戏对象和组件 ································ 53
3.1.1 创建游戏对象 ·························· 53
3.1.2 添加组件 ································ 54
3.1.3 特殊的组件——脚本 ················· 55
代码 3-1 添加属性 ··························· 55
3.1.4 课后习题 ································ 55
3.2 Unity 组件 ······································· 56
3.2.1 常用组件介绍 ·························· 56
3.2.2 获取、添加和删除组件 ·············· 57
代码 3-2 获取 Transform 组件············· 57
代码 3-3 为游戏对象添加 Rigidbody 组件 ································ 58
代码 3-4 删除 Box Collider 组件 ········· 58
3.2.3 课后习题 ································ 59
3.3 Unity 预制体 ···································· 60
3.3.1 创建预制体 ····························· 60
3.3.2 实例化预制体 ·························· 61
代码 3-5 实例化预制体 ····················· 61
3.3.3 课后习题 ································ 62
3.4 本章小结 ········································· 62
第 4 章 Unity 的常用功能系统 ················· 63
视频讲解:46 分钟
4.1 Unity 的灯光系统 ······························ 64
4.1.1 平行光 ··································· 64
4.1.2 点光源 ··································· 65
4.1.3 聚光灯 ··································· 65
4.1.4 面积光 ··································· 66
4.2 Unity 的遮挡剔除系统 ························ 67
4.2.1 遮挡剔除原理 ·························· 67
4.2.2 遮挡剔除示例 ·························· 67
4.3 Unity 的导航系统 ······························ 69
4.3.1 导航系统介绍 ·························· 70
4.3.2 导航系统面板介绍 ···················· 70
4.3.3 导航系统属性介绍 ···················· 71
4.3.4 AI 寻路示例 ···························· 72
代码 4-1 为对象添加坐标点位置 ········· 74
4.3.5 课后习题 ································ 75
4.4 Unity 的 UI 系统之 UGUI ···················· 75
4.4.1 UGUI——Canvas······················ 76
4.4.2 UGUI——Text ························· 76
4.4.3 UGUI——Image ······················· 77
4.4.4 UGUI——Button ······················ 78
代码 4-2 Button 监听函数测试代码 ······ 78
代码 4-3 动态添加监听事件 ··············· 79
4.4.5 UGUI——Toggle ······················ 79
代码 4-4 Toggle 组件监听函数测试 代码 ································· 80
代码 4-5 通过代码动态添加 Toggle 事件 ································· 81
4.4.6 UGUI——Slider ······················· 82
代码 4-6 监听 Slider 组件的 Value 值, 改变 Text 的值 ···················· 83
4.4.7 UGUI——ScrollView ················· 84
4.4.8 UGUI——Dropdown ················· 85
代码 4-7 Dropdown 组件的使用实例 ···· 86
4.4.9 UGUI——InputField ·················· 87
代码 4-8 修改脚本,添加单击登录按钮后显示账号和密码功能 ········· 88
4.4.10 课后习题 ······························ 89
4.5 Unity 的 UI 系统之 GUI ······················ 90
4.5.1 GUI 简介 ······························· 90
4.5.2 GUI 的基本控件 ······················ 90
代码 4-9 GUI 常用控件的使用 ··········· 91
4.5.3 GUILayout 自动布局 ················· 92
代码 4-10 使用默认 Rect 定位方式 排列 Label ························ 92
代码 4-11 使用 GUILayout 自动布局 ···· 93
4.6 Unity 的动画系统 ······························ 93
4.6.1 导入动画模型 ·························· 93
4.6.2 切换动画 ································ 96
4.6.3 控制动画的播放 ······················· 97
代码 4-12 通过控制动画参数切换动画 ··· 98
4.7 本章小结 ·································