(注: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 安装一个新包

安装一个新包的方法:

  1. 打开包管理器窗口,点击All按钮。
  2. 选择你想安装的Packages。对应的package信息会出现在右边的详细信息面板中。
  3. 在右侧的详细信息面板中点击Install X.X.X按钮。当进度条走完了,新包也就可以使用了。

Removing an installed package 移除已安装的包

移除一个已安装包的方法:

  1. 打开包管理器窗口。
  2. 点击In Project按钮。
  3. 选中你想移除的包。
  4. 在右侧详细信息面板中点击Remove X.X.X按钮。当进度条走完时,package也就从列表中消失了。

注意:

  • 你仅可以移除不被别的packages引用的packages。
  • 如果你移除一个包,则任何编辑器下或运行时对应的功能将不在可用。

Updating an installed package 更新一个已安装的包

你可以在In ProjectAll模式下,更新已一个packge:

  1. 打开包管理器窗口。任何名字后面有下载箭头的包都有可用的更新。
  2. 选中你想要更新的packages。
  3. 在详细信息面板中点击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 ProjectAll模式间进行切换,以强制更新。

参考:

  1. Unity Package Manager

首发于我的知乎专栏:https://zhuanlan.zhihu.com/p/70123645

Unity Package Manager的更多相关文章

  1. Unity Package Manager Error的解决方案

    问题来源 启动Unity时显示 fail to start Unity Package Manager,软件环境为 Unity 2017.3.0f3. 解决方案 根据网上所给的方案,我选择添加环境变量 ...

  2. 【Unity】 关于Package Manager 无限加载的问题(Loading Packages),以及可能的解决办法(待补充。)

    ·版本:2019.1.8f 官方论坛对于此问题的讨论:地址>Package Manager 许多人都遇到了这个问题,但是无法定位问题出在哪里.官方技术人员提供了一个名为 Package Mana ...

  3. 【Untiy】完美解决Untiy Package Manager无限加载的问题

    直接上干货 打开记事本,复制一下zhei个 @echo offset HTTP_PROXY=127.0.0.1set HTTPS_PROXY=127.0.0.1start "" & ...

  4. 你需要知道的包管理器(Package Manager)

    最近我花了一点时间关注了在不同系统之中所用到的包管理器(Package Manager) .最开始的时候,我是在使用Linux操作系统时,对这种工具以及它背后的想法深深迷恋住了:这真是自由的软件世界. ...

  5. 解决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 ...

  6. Visual Studio 2015 新建MVC项目 Package Manager Console不能使用 (HRESULT: 0x80131500)

    Visual studio 2015 突然新建不了MVC项目,报出错误: HRESULT: 0x80131500 在折腾了很长时间,最后在Github上看到这样一个贴 地址:https://githu ...

  7. Error: Could not access the Package Manager. Is the system running?

    最近在搭建cordova,android 开发环境,安装android studio之后创建一个demo之后,运行想看一下效果,在运行过程中创建一个虚拟机(arm)的,等了有1分钟左右,再次运行程序, ...

  8. Visual Studio 2010 更新NuGet Package Manager出错解决办法

    在Visual Studio 2010的扩展管理器中发现NuGet Package Manger有最新版本更新提示,选择更新安装提示以下错误信息: 2013/4/25 1:11:48 - Micros ...

  9. Getting and installing the PEAR package manager

    Windows After you have downloaded and installed PHP, you have to manually execute the batch file loc ...

随机推荐

  1. 深度优先遍历&广度优先遍历

    二叉树的前序遍历,中序遍历,后序遍历 树的遍历: 先根遍历--访问根结点,按照从左至右顺序先根遍历根结点的每一颗子树. 后根遍历--按照从左至右顺序后根遍历根结点的每一颗子树,访问根结点. 先根:AB ...

  2. 推荐4个Flutter重磅开源项目

    早上好,骚年,我是小 G,我的公众号「菜鸟翻身」会推荐 GitHub 上有用的项目,一分钟 get 一个优秀的开源项目,挖掘开源的价值,欢迎关注我. 近年来,随着移动智能设备的快速普及,移动多端统一开 ...

  3. Python中容器指的是什么?

    容器:容器是一种把多个元素组织在一起的数据结构,容器中的元素可以逐个地迭代获取,可以用in, not in关键字判断元素是否包含在容器中. 容器是一种可以包含其他类型对象(如列表.元组.字典等)作为元 ...

  4. PyQt(Python+Qt)学习随笔:QMdiArea多文档界面区域的viewMode、documentMode、tabsClosable、tabPosition等属性介绍

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 viewMode属性用于控制子窗口是使用子窗口模式(QMdiArea. ...

  5. swpuCTF2019 web1 无列名注入

    上周参加的swpuctf比赛第一道web题做了好久,在最后一个小时用非预期的方法做出来了,看了官方题解之后记录一下wp里面的无列名注入. 关于无列名注入可以看一下这篇链接 https://www.ch ...

  6. flask实现分类搜索的小测试

    最新学长要求实现一个搜索的功能呢,也费了一点功夫.这个案例也没有学长写的好,比学长的实现差了不少,待我仔细研究习再发出相应代码 项目要求,搜索语法如下: titile: xxx #搜索titile的所 ...

  7. linux c++ 内存泄漏检测工具:AddressSanitizer(ASan)

    1.介绍 AddressSanitizer(ASan),该工具为gcc自带,4.8以上版本均可以使用. 2.使用 编译的方式很简单,只需要添加 -fsanitize=address -g 即可,如 g ...

  8. 网络拓扑实例13:IPv4静态路由与NQA联动简介

    组网图形 IPv4静态路由与NQA联动简介 网络质量分析NQA(Network Quality Analysis)是一种实时的网络性能探测和统计技术,可以对响应时间.网络抖动.丢包率等网络信息进行统计 ...

  9. 学习笔记:Prufer 编码

    Prufer 编码可以将无根树与序列之间进行转化. 一个 \(n\) 个点.区分编号的无向图 和 Prufer 序列一定是一一对应的,下面会给出映射方式. 借此可以证明 Cayley 定理: \(n\ ...

  10. nginx学习之——虚拟主机配置

    例子1: 基于域名的虚拟主机 server { listen 80;  #监听端口 server_name a.com; #监听域名 location / { root /var/www/a.com; ...