Unity - Package Manager - Sample Workflow

Package Samples

對應有些模組的操作比較複雜繁瑣,有時需要有一些 Sample 做參考。官方 Package Manager 有個 “半套” Sample 工作流,讓人不是很舒服。

官方文件

Sample 資料夾後面加了波浪號 (~) 告訴 Unity 忽略 Samples~ 文件夾中的內容,此類文件夾不使用.meta文件進行跟踪。忽略 Samples~ 對 Package 使用者是好的,畢竟不是每個人都需要。

Unity_Package_BasicStructure

但對 Package 開發者,畢竟 Samples 也是要進版控的,而這樣改名的作法會徒增一些重命名的提交也有點煩躁(除非在修改 Sample 的過程中完全不提交)。原先想說寫個 Samples ↔ Samples~ 切換的腳本就好,會一直有 meta 檔的警告(刪掉/改名都還是在)。

Unity_PackageManager_MetaWarning

官方作法 論壇中的某篇討論才記載他們的做法(倒是加到文件中阿…)

  • 在內部確實使用了名為 Samples 的文件夾 (沒有 Samples~ )
  • 在推送新包版本之前通過腳本對其進行重命名(透過 CI )

OpenUPM 的作者也是使用類似的工作流,總之筆者也調整為上述的方式。

透過 GitHub Actions Workflow 調整目錄名

筆者不熟 GitHub Actions/ YAML/ 文件操作,但這種初階的操作就交由 chatgpt 代勞,幫我省去不少實驗成本。這裡的操作只是堪用,應該有更好的方式。

以下是筆者要求的條件

  • 想透過 GitHub Actions 中的 workflow 完成
  • 如果 forPackage 分支已存在則將其刪除
  • 從 main 建立新的 forPackage 分支
  • Assets/Modules 的所有子目錄(同時有 “package.json” 與 “Samples"資料夾),將該子目錄的 “Samples資料夾” 重新命名 為 “Samples~資料夾”
  • 並提交更新

將產出的 yml 做一點微調即可。主要文件操作的出錯率很高,find 指令似乎是有些眉角,等有空再回頭研究。

想要連接到存儲庫的特定分支並下載特定目錄下的內容

最後調整一下訪問的格式即可。

透過 Add package from git URL

HTTPS_URL_Address?path=Target_Path#Branch