Unity简介与环境搭建

Unity是目前世界上最流行的游戏引擎之一,它广泛应用于游戏开发、影视动画、建筑可视化、工业仿真等领域。Unity拥有强大的跨平台能力,一次开发即可发布到Windows、macOS、Android、iOS、WebGL以及各大主机平台,同时凭借直观的场景和内容编辑器、丰富的资源商店和庞大的开发者社区,Unity一直以来都是无数独立游戏开发者和专业团队的首选工具之一。多年以来Unity积累了大量的游戏开发最佳实践,即使你不打算真正使用Unity引擎来开发游戏,学习Unity并借鉴其中的设计思路也是很有意义的。
不过要注意的是Unity是一款闭源商业游戏引擎,如果你使用Unity开发游戏并盈利,当年收入或融资低于二十万美元时允许申请个人授权并免费使用,超过则需要购买专业版或企业版。
官方网站:https://unity.com/
本系列笔记我们将介绍Unity引擎的核心概念和主要功能,我们使用的版本是Unity 2022.3 LTS。
安装UnityHub和编辑器
目前Unity编辑器需要通过UnityHub启动器来安装,我们可以在Unity官方网站找到UnityHub的下载链接,UnityHub经常更新因此界面总是变化,不过操作逻辑一直没变。启动UnityHub后,我们需要登录自己的Unity账号,如果授权过期则可能还需要重新激活授权,不过Unity Personal(个人授权)一直都是免费的。激活授权后,我们安装Unity编辑器就行了。
注意:
- Unity编辑器默认会安装到
C:\Program Files\Unity下,如果你不想安装到C盘,记得提前在UnityHub的设置中修改。 - 如果你使用的是个人授权,可以选择LTS版本,官方提供约两年的维护支持,只修复Bug、不引入破坏性,是实际项目开发的首选,但不能用extended LTS(加长 LTS)版本,它们只支持专业版和企业版授权。
安装Unity编辑器时,通常还需要选择附加模块,模块决定该版本编辑器附带安装哪些支持组件,常用模块说明如下:
- Microsoft Visual Studio Community:勾选后会下载并安装VS2022,如已安装VS2022或打算使用Rider可取消勾选,避免重复安装
- Windows Build Support (IL2CPP):Windows平台的IL2CPP构建支持,建议勾选它。IL2CPP是将C#中间语言转译为C++再编译的构建方式,正式构建游戏的Windows版本时需要使用它,不勾选则只能以Mono方式构建
- Mac Build Support / Linux Build Support:目标平台为Mac/Linux时勾选,Windows下开发可暂不安装,之后可随时补装
- Android Build Support / iOS Build Support:移动平台构建支持,包含对应的SDK/NDK/JDK等组件,可暂不安装,需要时勾选
- Documentation:离线版官方文档,除非你在离线环境工作看不到官方的在线文档,否则没必要勾选
- Language Pack:语言包建议使用英文原版即可,不必勾选
确认后UnityHub会自动下载并安装,安装过程耗时较长,需要耐心等待。安装完成后,安装页签中即可看到已安装的版本,之后也可以随时点击版本卡片右上角的齿轮按钮追加安装或移除模块。

配置IDE
Unity的脚本使用C#编写,因此需要搭配一款IDE获得代码补全、重构、调试等能力。目前主流选择有两个:
- JetBrains Rider:JetBrains出品的跨平台.NET IDE,目前也是Unity开发体验最好的IDE之一。即使你不知道JetBrains,你也一定听说过或使用过ReSharp,它就是JetBrains公司开发的。Rider对Unity有深度集成,它默认安装会内置一个名叫
Unity Support的插件,我们无需再额外安装什么插件了,不过注意Rider是付费软件,采用订阅制授权。 - Visual Studio 2022 Community:VS大家都知道,它是微软官方的IDE,个人用于开发自由软件或商业应用都是免费无限制的。要想使用VS开发Unity工程,我们需要先在Visual Studio Installer中勾选使用 Unity 的游戏开发工作负载,该工作负载包含Unity调试器扩展(Visual Studio Tools for Unity),安装后即可直接对Unity项目代码进行断点调试。
准备好你需要的IDE后,我们可以在Unity编辑器中打开任意工程(或者新建一个),然后点击Edit -> Preferences -> External Tools,在External Script Editor下拉框中选择Rider或Visual Studio。正常情况下Unity编辑器会自动检测到已安装的IDE,如果没检测到可以尝试重启Unity编辑器,或手动指定IDE的可执行文件路径。

设置完成后,在Project视图中双击任意C#脚本,就会用配置的IDE打开整个工程。
当需要断点调试工程时:
Rider:直接点击工具栏的Attach按钮(或Run -> Attach to Unity Editor),选择正在运行的Unity编辑器进程即可附加调试。
Visual Studio:点击菜单中的调试 -> 附加 Unity 调试程序,选择Unity编辑器进程即可。首次调试时,Unity编辑器右下角可能弹出“是否允许调试”的提示,选择允许即可。
创建工程
环境安装完成后,我们可以创建工程验证环境可用。在UnityHub的项目页签中选择新建项目,上方选择我们的Unity编辑器版本,下方模板列表中选择2D (URP)模板。URP(Universal Render Pipeline,通用渲染管线)是Unity当前主推的渲染管线,它取代了旧的Built-in管线,2D和3D通用;2D (URP)模板预置了URP管线配置和2D渲染器,是当前2D项目的标准起点。工程起名建议使用PascalCase命名风格,例如DemoUnity,或者采用dotNet命名空间风格公司名.项目名.模块名,例如Gacfox.Demo.LearnUnity。
首次创建工程时,Unity会导入模板资源并生成Library缓存,耗时几分钟属正常现象。

打开后,在Project视图右键Create -> C# Script创建一个脚本,双击确认能用IDE正常打开,再点击编辑器顶部中央的播放按钮,确认工程能正常进入运行模式。
工程目录结构
Unity工程在磁盘上的典型结构如下。
DemoUnity
|_Assets/ # 工程资源目录,包括源代码、场景、美术资源等
|_Packages/ # 包管理配置
|_ProjectSettings/ # 工程级配置
|_Library/ # 编辑器本地缓存
|_Temp/ # 运行期临时文件
|_obj/ # C# 编译中间产物
|_Logs/ # 编辑器日志
|_UserSettings/ # 用户个人界面布局等设置
其中Library、Temp、obj、Logs、UserSettings是Unity自动生成的目录,删除后重新打开工程会自动重建,我们也不要将其提交到版本库中,真正需要我们管理和提交版本库的只有前三个目录。
Assets
Assets是工程的核心目录,我们编写的所有脚本、创建的场景、导入的贴图、模型、音频等资源全部存放在这里。编辑器中的Project视图展示的就是Assets目录的内容。在Project视图中,我们可以管理整个工程的文件目录结构,各种资源会有相应的图标显示。视图中对资源的创建、重命名、移动、删除操作,都会真实反映到磁盘上的Assets目录。
Packages
Packages目录存放Package Manager的配置文件,其中最重要的是manifest.json,它记录了工程依赖的所有Unity官方包和第三方包的名称与版本号。克隆工程后,Unity打开时会根据manifest.json自动下载并恢复所有包,因此该目录必须提交版本库。有关Package Manager的详细内容我们将在后续章节专门介绍。
ProjectSettings
ProjectSettings目录存放工程级的配置资产,其中包括许多.asset 文件:
ProjectSettings.asset:工程名称、公司名、图标、默认脚本运行环境等Physics.asset、Physics2D.asset:物理系统配置QualitySettings.asset:画质等级配置GraphicsSettings.asset:图形渲染配置TagManager.asset:Layer与Tag定义EditorBuildSettings.asset:参与构建的场景列表
这些配置都是工程的一部分,所有团队成员应当共享,因此必须提交版本库。
Library
Library是Unity编辑器的本地缓存目录,内容可能非常庞大(几个GB很常见),主要内容包括:
- 资源的导入产物:Unity会将
Assets中的原始资源(如PNG、FBX)转换为引擎内部使用的格式并缓存于此,以加快编辑器启动和运行速度 - 包缓存:Package Manager下载的包的本地展开结果
- 脚本编译产物、Shader编译缓存等
Library的全部内容都可以由Assets、Packages、ProjectSettings三个目录自动重新生成,其中的内容与平台、引擎版本相关,直接把别人的Library拷贝过来通常没有意义,反而可能引发诡异问题,因此团队协作中每个成员都应让Unity在本地自行生成Library,且它不应提交版本库。删除Library后重新打开工程,Unity会重新导入所有资源并重建缓存。
.meta 文件
在Assets目录中,每个资源文件和每个文件夹旁边都有一个同名的.meta文件,例如Player.png会自动产生对应的Player.png.meta。.meta文件是YAML格式的文本,主要记录两部分信息:
- GUID:Unity分配给该资源的全局唯一标识符,Unity中所有的资源引用(场景中引用的贴图、Prefab中引用的脚本等)都是通过GUID关联的,而非文件路径
- 导入设置:该资源在Inspector中配置的导入参数,例贴图的Sprite类型、模型的缩放系数等
由此我们可以得出两条重要规则:
.meta文件必须和资源文件一起提交版本库。如果丢失了.meta,Unity会为资源重新生成一个新的 GUID,工程中所有对该资源的引用将全部断链,这是团队协作中最常见的灾难之一- 添加、移动、重命名资源时都要在Unity编辑器的Project视图中操作,不要直接在文件管理器中操作!编辑器操作会自动处理
.meta文件,保证GUID的一致性;在文件管理器中单独移动资源文件而留下.meta,同样会导致GUID错乱