NuGet for Unity:提升 Unity 开发效率的利器
NuGet 是 .NET 开发生态中不可或缺的包管理工具,你可以将其理解为Unity的Assets Store或者UPM,里面有很多库可以帮助我们提高开发效率。当你想使用一个库,恰好这个库没什么依赖(比如newtonjson),那么下载包并找到Dll直接放到Plugins下就可以使用了,但如果你想使用的这个库有很多依赖(如Epplus),并且依赖还有依赖,这个时候你就麻了,这可咋整?这时候 NuGet for Unity,一个能让 Unity 项目轻松引入和管理第三方库的插件便闪亮登场了!!!
在本文中,我将从 是什么、为什么需要它 和 如何使用 这三个方面,带你快速了解和上手 NuGet for Unity。
1. 什么是 NuGet?
NuGet 是 .NET 开发中的包管理工具,类似于 Unity 中的 Package Manager,但适用于整个 .NET 生态。通过 NuGet,开发者可以轻松获取第三方库及其依赖,而无需手动下载和管理 DLL 文件。但这是对于.net环境而言的,Unity没办法直接集成.
2. 什么是 NuGet for Unity?
NuGet for Unity 是一个开源的 Unity 插件,允许开发者在 Unity 项目中使用 NuGet 包。它能够帮助开发者:
- 快速引入 .NET 第三方库,例如 JSON.NET、NPOI 等。
- 自动管理包的依赖和版本,无需手动下载和配置 DLL 文件。
- 与 Unity 项目无缝集成,简化了外部库的使用流程。
换句话说,它是 Unity 世界中的一个“桥梁”,连接了 .NET 的 NuGet 生态。
3. 为什么需要 NuGet for Unity?
在 Unity 项目中管理外部依赖是一项繁琐且容易出错的工作。传统方式需要你:
- 手动下载第三方库的 DLL 文件。
- 确保所有依赖项都完整且版本一致。
- 在 Unity 中手动导入并配置。
这不仅耗时,而且随着项目规模的扩大,管理起来会越来越复杂。
而通过 NuGet for Unity,开发者可以轻松实现:
- 自动化依赖管理:它会根据配置文件自动下载并安装所有依赖。
- 节省时间:只需简单操作即可引入复杂的第三方库。
- 保持版本一致:团队协作时,只需提交依赖配置文件,同事的环境会自动同步。
适用场景
- 引入常见的 .NET 库,如 JSON 解析器、日志工具等。
- 使用复杂的第三方库(如 Excel 读写库 Epplus),避免处理繁琐的依赖。
- 在多人协作中确保所有成员使用相同的库版本。
4. 如何使用 NuGet for Unity?
接下来,我们将通过实际操作,快速上手 NuGet for Unity。
4.1 安装 NuGet for Unity
GitHub - GlitchEnzo/NuGetForUnity: A NuGet Package Manager for Unity
导入项目即可
4.2 基本使用方法
注意这里展示的是Nuget官网服务器中的包,也就是说插件默认使用官网服务中的数据源.在偏好中可以修改数据源,在偏好界面的Package Sources中添加你的私有服务器地址.
在Online界面,需要什么包就搜什么包,比如我想使用Epplus.
第一个就是我需要的,点击Install,版本是7.5.0.
然后就下载下来了:
默认是放在Packages下,为什么有这么多包被下载下来?其实这些包可以分成两类:显示包和隐式包.我刚才下载的Epplus就是我需要的,即为显示包,但是这个包依赖其他包,这些其他包就是隐式包.注意:最下面两个文件:Nuget和packages不要删除,这是两个配置文件.
Nuget是你对本插件的配置.
打开Preference,
我们可以在这里操作本插件的一些基本配置.
packages是你下载的包的配置.
目前感觉有点丑陋,首先在Assets中有了很多包,这导致我们的Assets有些乱,并且git还要配置对该目录的忽略项.所以我们这样
将Placement配置为:InPackages Folder.
这样就跑到了Packages下,一下子就清爽多了,但是目前还有一个问题,git应该忽略该目录.
git没必要管理这些,只需要管理packages配置文件就好了.所以
加上
/[Pp]ackages/nuget-packages/InstalledPackages
/[Pp]ackages/nuget-packages/InstalledPackages.meta
忽略就好了.
理论上别人拉取的时候会自动下载这些包
但是如果没有拿到
使用Restore Packages强制加载.或者你不小心误删了,也可以使用该选项重新根据配置加载包.
其实将Placement配置为:InPackages Folder操作是将其作为了一个嵌入包
选择第三个选项可以查看依赖树:即你的显式包依赖那些隐式包.
安装界面下可以查看你已经安装的包,同时可以点击卸载.
5. 注意事项
虽然 NuGet for Unity 提供了很多便利,但在使用时仍需注意以下几点:
-
Unity 的运行时限制:
- Unity 使用的是 Mono 运行时,与标准 .NET 运行时有一些差异。
- 某些依赖包可能无法直接使用,需要手动调整。
-
依赖冲突:
- 如果多个 NuGet 包依赖于不同版本的同一库,可能会导致冲突。
- 可以在 Unity 的
Player Settings → Other Settings
中禁用Assembly Version Validation
来绕过此问题
最后还有一些高级内容不做说明:比如创建自己的包服务器,创建自己的包等,感兴趣在官网自行查看详细信息.