(注: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