Unity Package Manager
(注:Unity 2018.1及以后的版本才可以使用Package Manager。)
一个package是一个容器,里面放的是Assets, Shaders, Textures, plug-ins, icons 和c# scripts,可以用来增强你项目的各个部分。Unity packages是Asset Store packages的更新(newer)、更紧密集成的版本(more tightly integrated versions),能够为Unity提供更广泛的增强功能。
使用Unity的包管理器窗口(Package Manager window,在Unity的顶部菜单: Window > Package Manager),可以 查看有哪些当前版本的Unity可用的包(packages),或者查看当前项目已经安装了哪些packages。另外,你也可以使用这个窗口来为项目安装,移除或更新packages。

Package Manager窗口左侧显示packages列表,右则显示选中的包的详细信息。
Finding packages 查找包
默认,包管理器窗口以In Project的模式显示packages列表,这样只有项目中已安装的packages才会出现在列表中。
你可以点击All按钮,这样为显示当前版本Unity所有可用的packages。这时左边列表里会显示所有已在包注册表(package registry,见下面)中注册的东西,无论它们是否已在当前项目中安装。

Viewing package details 查看package详细信息
包管理器右侧的面板显示的是选中的package的详细信息。

包括以下信息:
- (A) 显示名称 (the display name)
- (B) 版本号 (和 tag,如果有的话)
- (C) package的文档页的超链接
- (D) 以
com.unity.开头的正式包名 - (E) 作者
- (F) 是否已安装,是否可更新
- (G) 简要说明
- (H) package的安装(install), 移除(remove),或更新(update)按钮
- (I) 查看package变化日志的链接
Version tags 版本标签
有些package会成版本号(version number)旁边显示版本标签。这些标签(tags)传递关于这个package当前版本的信息。

包管理器使用下面这些值:
| 标签(Tag) | 含义(Meaning) |
|---|---|
verified |
已验证版。Unity的质量保证团队已经正式验证过这个package可以和一个具体版本号的Editor一起工作 |
| preview | 预览版。这个package正处于发布周期的早期阶段,可能没有文档,可能也没有被完全验证过。 |
一个没有package的包被认为是生成安全的(A Package without a tag is considered production quality)。
Finding more information
通过查看package的文档,你可 查看更多关于一个package的信息。
你可以点击View Documentation来查看package的文档。

Package文档会成默认浏览器中打开。
Accessing the Package Manager window 打开包管理器窗口
通过Package Manager窗口,你可以完成各种各样的任务:
- 安装一个新的package
- 移除一个已安装的package
- 更新一个已安装的package
打开包管理器窗口的方法:在Unity的主菜单栏中依次点Window > Package Manager,如下图:

Installing a new package 安装一个新包

安装一个新包的方法:
- 打开包管理器窗口,点击All按钮。
- 选择你想安装的Packages。对应的package信息会出现在右边的详细信息面板中。
- 在右侧的详细信息面板中点击Install X.X.X按钮。当进度条走完了,新包也就可以使用了。
Removing an installed package 移除已安装的包

移除一个已安装包的方法:
- 打开包管理器窗口。
- 点击In Project按钮。
- 选中你想移除的包。
- 在右侧详细信息面板中点击Remove X.X.X按钮。当进度条走完时,package也就从列表中消失了。
注意:
- 你仅可以移除不被别的packages引用的packages。
- 如果你移除一个包,则任何编辑器下或运行时对应的功能将不在可用。
Updating an installed package 更新一个已安装的包

你可以在In Project或All模式下,更新已一个packge:
- 打开包管理器窗口。任何名字后面有下载箭头的包都有可用的更新。
- 选中你想要更新的packages。
- 在详细信息面板中点击Update to X.X.X按钮。
Advanced package topics 关于package的高级话题
下面讲的是关于package manifest文件的更高级的信息。如果你中是安装、移除或更新packages的话,不需要往下看了。
一个Unity package除了它的内容(Assets, Shaders, Textures, plug-ins, icons和scripts)外,还包含一个包清单文件(package manifest file)。这个manifest文件告诉Unity怎样在包管理器窗口中显示它的信息页 和 怎样去在项目中安装这个package。

此外,它也包含另外几个文件,帮助包的部署,包括: the tests, the samples, the license, the changelog,还有文档。
Manifests
有两类manifest文件:project manifests (manifest.json)和package manifests (package.json)。两者都使用JSON语法和包管理器(Package Manager)沟通,前者描述当前项目有哪此可用的包,后者描述当前包里面有什么。
Project manifests
Project manifests (manifest.json)告诉包管理器当前项目可以使哪些包的哪些版本。
Project manifests 支持下面这些值:
| key | JSON Type | Description |
|---|---|---|
| dependencies | Object | Package Manger要加载的包列表。 |
下面是一个manifest.json文件的例子:
{
"dependencies": {
"com.unity.package-1": "1.0.0",
"com.unity.package-2": "2.0.0",
"com.unity.package-3": "3.0.0"
}
}
Unity把project manifest文件存放在[your_project_root_folder]/Packages/manifest.json。
Package manifests
Package manifests (package.json)用来决定加载哪个版本的package,在Package Manager Window中显示什么信息。
Package manifests支持以下值:
| Key | JSON Type | Description |
|---|---|---|
name |
String | 正式注册的包名,遵守以下命名规则:"com.unity.[your package name]"。例如, "com.unity.resourcemanager" |
displayName |
String | 在包管理器中显示的包名。例如,"Resource Manager" |
version |
String | 包的版本"MAJOR.MINOR.PATCH"。Unity的packages遵循Semantic Versioning系统。例如,"1.3.0"。 |
unity |
String | 支持这个包的Unity版本。例如,"2018.1"表明Unity 2018.1以上的版本才能使用 |
description |
String | 包的简要说明 |
keywords |
Array of Strings | 用于在包管理器中搜索的关键词,用JSON array表示。例如,["Physics", "RigidBody", "Component"]。 |
category |
String | 包所属的分类(category)。例如,"Forces"。 |
dependencies |
Ojbect | 此包依赖的包的列表。 |
下面是一个package.json文件的例子:
{
"name": "com.unity.package-4",
"displayName": "Package Number 4",
"version": "2.5.1",
"unity": "2018.1",
"description": "This package provides X, Y, and Z. \n\nTo find out more, click the \"View Documentation\" link.",
"keywords": ["key X", "key Y", "key Z"],
"category": "Controllers",
"dependencies": {
"com.unity.package-1": "1.0.0",
"com.unity.package-2": "2.0.0",
"com.unity.package-3": "3.0.0"
}
}
Unity把package manifest存储在[your_package_root_folder]/package.json。
The Package Registry 包注册表
Unity维护着一个可供分发的正式包的中央注册表(central registry)。当Unity加载时,包管理器和注册表通信,检查project manifest 文件,在包管理器窗口中显示每个可用包的状态。
当你从项目中移除一个package时,包管理器更新project manifest以在In Project模式的列表中排除它。
当你安装或更新一个package时,包管理器为从登记处下载这个package。
Technical details 技术细节
Requirements 要求
要求Unity 2018.1以后的版本。
Known limitations 已知的限制
如果你手动编辑manifest.json文件,包管理器窗口不会刷新packages列表。你需要重新打开窗口或者在In Project和All模式间进行切换,以强制更新。
参考:
首发于我的知乎专栏:https://zhuanlan.zhihu.com/p/70123645
Unity Package Manager的更多相关文章
- Unity Package Manager Error的解决方案
问题来源 启动Unity时显示 fail to start Unity Package Manager,软件环境为 Unity 2017.3.0f3. 解决方案 根据网上所给的方案,我选择添加环境变量 ...
- 【Unity】 关于Package Manager 无限加载的问题(Loading Packages),以及可能的解决办法(待补充。)
·版本:2019.1.8f 官方论坛对于此问题的讨论:地址>Package Manager 许多人都遇到了这个问题,但是无法定位问题出在哪里.官方技术人员提供了一个名为 Package Mana ...
- 【Untiy】完美解决Untiy Package Manager无限加载的问题
直接上干货 打开记事本,复制一下zhei个 @echo offset HTTP_PROXY=127.0.0.1set HTTPS_PROXY=127.0.0.1start "" & ...
- 你需要知道的包管理器(Package Manager)
最近我花了一点时间关注了在不同系统之中所用到的包管理器(Package Manager) .最开始的时候,我是在使用Linux操作系统时,对这种工具以及它背后的想法深深迷恋住了:这真是自由的软件世界. ...
- 解决VS2015启动时Package manager console崩溃的问题 - Windows PowerShell updated your execution policy successfully, but the setting is overridden by a policy defined at a more specific scope
安装VS2015,启动以后,Package manager console崩溃,错误信息如下: Windows PowerShell updated your execution policy suc ...
- Visual Studio 2015 新建MVC项目 Package Manager Console不能使用 (HRESULT: 0x80131500)
Visual studio 2015 突然新建不了MVC项目,报出错误: HRESULT: 0x80131500 在折腾了很长时间,最后在Github上看到这样一个贴 地址:https://githu ...
- Error: Could not access the Package Manager. Is the system running?
最近在搭建cordova,android 开发环境,安装android studio之后创建一个demo之后,运行想看一下效果,在运行过程中创建一个虚拟机(arm)的,等了有1分钟左右,再次运行程序, ...
- Visual Studio 2010 更新NuGet Package Manager出错解决办法
在Visual Studio 2010的扩展管理器中发现NuGet Package Manger有最新版本更新提示,选择更新安装提示以下错误信息: 2013/4/25 1:11:48 - Micros ...
- Getting and installing the PEAR package manager
Windows After you have downloaded and installed PHP, you have to manually execute the batch file loc ...
随机推荐
- synchronized的底层原理?
最近更新的XX必备系列适合直接背答案,不深究,不喜勿喷. 你能说简单说一下synchronize吗? 可别真简单一句话就说完了呀~ 参考回答: synchronize是java中的关键字,可以用来修饰 ...
- Mybatis log plugin 破解!!!
前言 今天重新装了IDEA2020,顺带重装了一些插件,毕竟这些插件都是习惯一直在用,其中一款就是Mybatis Log plugin,按照往常的思路,在IDEA插件市场搜索安装,艹,眼睛一瞟,竟然收 ...
- Spring Cloud Alibaba 初体验(一) Nacos 配置中心
一.Nacos 下载与初始化配置 本文使用1.2.0,下载地址:https://github.com/alibaba/nacos/releases Nacos 单机模式支持持久化配置到 MySQL 数 ...
- 不是程序员,代码也不能太丑!python官方书写规范:任何人都该了解的 pep8
不是程序员,代码也不能太丑!python官方书写规范:任何人都该了解的 pep8 简介:为什么要强调 书写规范 ?这其实并不关乎"美丑",而是为了 更高的效率(代码阅读.开发.维护 ...
- go语言小知识点
fmt包相关 fmt包主要是实现了格式化的I/O函数 fmt.Println() 行打印 fmt.Printf() 格式化输出 %d int %s str %t type,类型 %p 内存地址 % ...
- 第8.5节 Python类中的__new__方法和构造方法__init__关系深入剖析:执行顺序及参数关系案例详解
上节介绍了__new__()方法这个比构造方法还重要的方法的语法,本节通过案例来详细剖析__new__()方法的细节以及它与构造方法之间的关系. 一. 案例说明 本节以圆Cir类为例来说明,为了 ...
- PyQt(Python+Qt)学习随笔:clicked和clicked(bool)信号连接同名函数出现的问题
在Qt中,控件中的clicked()信号和clicked(bool)信号是两个不同的信号,映射槽函数时,clicked()信号映射到的槽函数是不带参的,clicked(bool)信号映射到的槽函数是带 ...
- 关于RequestParam在不同的Spring版本上,接口在controller重载时注解可能失效的踩坑记录
先抛背景: 我项目中的Spring版本是2.0.3.RELEASE. api-demo负责暴露接口,service-demo负责实现功能.接口参数的@RequestParam和@RequestBody ...
- 学习tcp和udp
tcp和udp的差别 tcp和udp是不一样的 tcp是一个可靠的连接,如果发出一个tcp请求,那么就一定要回复一个请求 而udp是不需要回复的,就像QQ一样,只要发过来就可以了,不管别人在不在线,发 ...
- 团队作业5_测试与发布(Alpha版本)
Alpha版本测试报告 1.测试找出的bug(N个): (1)修复的Bug:很多个,主要是一些疏忽造成的,比如请求url写错导致数据加载不了.比较有意义的bug是因为使用redux,但是用户刷新后数据 ...