本篇要來製作自己的 Unity Package Manager (UPM)

Unity Package Manager 是 Unity 中的插件包

類似你從 Asset Store 下載插件來使用的感覺

不同的地方是使用 UPM 你可以自己掛載在 Github 或是 OpenUPM

管理自己的插件起來比較方便簡單


1. 建立 UPM Package 開發環境

Unity 推出了官方的 UPM Package 開發工具

只需要一步就可以把開發的環境框架創建好

省去了自己手動建立資料夾的步驟

首先打開 Package Manager, 點擊 Install package from git URL

輸入 com.unity.upm.develop

安裝成功之後你就會看到 Create package 的選項

創建新的 package之後

你會看到一個已經整理好資料結構的插件包

接下來只要替換掉裡面的代碼和文檔就行啦


2. 開始開發自己的插件包 - YapiBtn

接下來我們來開發一個自己的插件包

並且上傳到 Github 和 OpenUPM

我們使用上一篇提到的 YapiBtn 來做成插件包

點選生成的 Package 目錄之後

點擊 Copy To Packages folder

可以把創建的環境複製到Asset底下進行開發編輯:

接下來就把代碼和文件重新擺放進去即可

熟練之後也可以直接創建對應的資料夾

省去安裝 UPM 開發工具的步驟

以下是我修改後的目錄結構:

核心代碼的部分我放到了 Scripts/ 下面

通常可以區分成 Editor 和 Runtime (但我這裡放 Attributes)

為了提高編譯效率

可以分別在 Editor 和 Runtime 上新增 Assembly Definition

在 Editor 的 Assembly Definition 上可以增加Runtime 代碼的 Assembly

然後記得勾選 Editor就好

這樣遊戲打包發佈的時候就不會一起打包出去

比較重要的是 package.json 要好好地寫

這個會顯示在 Package Manager 上:

{
	"name": "com.yayapipi.yapibtn",
	"displayName":"YapiBtn",
	"version": "0.1.0",
	"unity": "6000.0",
	"description": "The **YapiBtn** package allows you to add custom buttons in the Unity Inspector by attaching the `[YapiBtn]` attribute to methods, making testing and debugging easier.",
	"dependencies": {
	},
	"samples": [
		{
			"displayName": "YapiBtn Demo",
			"path": "Samples/Example"
		}
	]
}

更詳細的參數可以到這裡查看:

Unity - Manual: Package manifest

3. 上傳到 Github

首先在 Github 上建立新的 Repository

git clone 下來之後拖到專案目錄下

可以先把當前的專案 commit 一份上去

記得加上 .gitignore 排除不要的文件

接下來你可以直接用指定路徑的方式安裝(記得開新專案)

https://github.com/yayapipi/YapiBtn.git?path=Assets/YapiBtn

安裝成功之後就會長這個樣子:

你也可以再額外安裝 Samples 到 Assets 頁面:

4. 上傳到OpenUPM

OpenUPM 是一個 Unity Package 的插件包管理網站

上面有很多各種各樣的 Unity 開源插件包

你也可以自己上傳自己的 Github 插件包上去

但在那之前,

我們需要開另一個 git branch 來管理我們的插件包

git subtree split --prefix=Assets/YapiBtn --branch upm
git tag 1.0.0 upm
git push origin upm --tags

上面的指令是

先用 subtree split 指令把 YapiBtn 目錄下的文件整理成一個 Branch

然後新增一個 1.0.0 的 tag 再推上去 Github

完成這一步之後

你就成功解鎖了更多的安裝插件包的​功能:

https://github.com/yayapipi/YapiBtn.git#1.0.0
https://github.com/yayapipi/YapiBtn.git#upm

接下來我們可以去上傳 OpenUPM了

https://openupm.com/packages/add/

到上面的網址, 跟著指令填寫相關的訊息

填寫完成之後會跳出 Github 的頁面

你需要先 fork 一份專案

然後按 Commit changes

然後申請 Pull Request

接下來就會開始跑自動化的流程,驗證你的插件包

順利的話

差不多15~30分鐘後就會看到你的插件了

插件網址會長這樣

https://openupm.com/packages/your-package-name/

也會出現在 Listing Page


專案 Github:

GitHub - yayapipi/YapiBtn: Unity Package for quick inspector button debug
Unity Package for quick inspector button debug. Contribute to yayapipi/YapiBtn development by creating an account on GitHub.

參考文章:

[1] Unity 插件目錄結構說明

[2] 開發 Unity PackageManager 插件包

[3] 自己搭建Unity Package Server

[4] Creating custom packages