(注:Unity 2018.1及之后的版本才可使用Package Manager。)html
一个package是一个容器,里面放的是Assets, Shaders, Textures, plug-ins, icons 和c# scripts,能够用来加强你项目的各个部分。Unity packages是Asset Store packages的更新(newer)、更紧密集成的版本(more tightly integrated versions),可以为Unity提供更普遍的加强功能。json
使用Unity的包管理器窗口(Package Manager window,在Unity的顶部菜单: Window > Package Manager),能够 查看有哪些当前版本的Unity可用的包(packages),或者查看当前项目已经安装了哪些packages。另外,你也可使用这个窗口来为项目安装,移除或更新packages。c#
Package Manager窗口左侧显示packages列表,右则显示选中的包的详细信息。浏览器
默认,包管理器窗口以In Project的模式显示packages列表,这样只有项目中已安装的packages才会出如今列表中。安全
你能够点击All按钮,这样为显示当前版本Unity全部可用的packages。这时左边列表里会显示全部已在包注册表(package registry,见下面)中注册的东西,不管它们是否已在当前项目中安装。编辑器
包管理器右侧的面板显示的是选中的package的详细信息。
ide
包括如下信息:ui
com.unity.
开头的正式包名有些package会成版本号(version number)旁边显示版本标签。这些标签(tags)传递关于这个package当前版本的信息。3d
包管理器使用下面这些值:日志
标签(Tag) | 含义(Meaning) |
---|---|
verified |
已验证版。Unity的质量保证团队已经正式验证过这个package能够和一个具体版本号的Editor一块儿工做 |
preview | 预览版。这个package正处于发布周期的早期阶段,可能没有文档,可能也没有被彻底验证过。 |
一个没有package的包被认为是生成安全的(A Package without a tag is considered production quality)。
经过查看package的文档,你可 查看更多关于一个package的信息。
你能够点击View Documentation来查看package的文档。
Package文档会成默认浏览器中打开。
经过Package Manager窗口,你能够完成各类各样的任务:
打开包管理器窗口的方法:在Unity的主菜单栏中依次点Window > Package Manager,以下图:
安装一个新包的方法:
移除一个已安装包的方法:
注意:
你能够在In Project或All模式下,更新已一个packge:
下面讲的是关于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,还有文档。
有两类manifest文件:project manifests (manifest.json
)和package manifests (package.json
)。二者都使用JSON语法和包管理器(Package Manager)沟通,前者描述当前项目有哪此可用的包,后者描述当前包里面有什么。
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.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
。
Unity维护着一个可供分发的正式包的中央注册表(central registry)。当Unity加载时,包管理器和注册表通讯,检查project manifest 文件,在包管理器窗口中显示每一个可用包的状态。
当你从项目中移除一个package时,包管理器更新project manifest以在In Project模式的列表中排除它。
当你安装或更新一个package时,包管理器为从登记处下载这个package。
要求Unity 2018.1之后的版本。
若是你手动编辑manifest.json
文件,包管理器窗口不会刷新packages列表。你须要从新打开窗口或者在In Project和All模式间进行切换,以强制更新。
参考:
首发于个人知乎专栏:https://zhuanlan.zhihu.com/p/70123645