Unity:使用Package Manager開發(fā)和管理自定義插件

說起第三方軟件的管理,iOS平臺有Cocoapods,Andriod有Gradle,Unity開發(fā)者直到Unity2018才有了Packages Manager!

在介紹這個工具之前,我們先來看另外一個資源共享的工具: .unitypackage 文件;

.unitypackage

在兩個不同的項(xiàng)目之間公用一個Scene,資源,或者代碼,如果不考慮版本更新,那么這種方式是最快捷的;
我們可以對預(yù)設(shè)體,Scene,甚至是文件夾,使用 Export Package 導(dǎo)出為一個 .unitypackage 文件,然后在另外的項(xiàng)目使用 Import Package 命令,導(dǎo)入這部分資源;

使用.unitypackage.png

Package Manager創(chuàng)建本地包

先了解兩個文件,這是包管理的核心:

  • package.json
    這個文件是所有自定義包都要有的,來標(biāo)識包的名字和信息,也可以在 Package Manager的UI面板中選中該包查看到這些信息;
    關(guān)于這個文件的配置,可以參考這里:
    package.json的信息配置
    下面是一個示例:
{
  "name": "com.calabash.net",
  "displayName": "CANet",
  "version": "1.0.0",
  "description": "a test custom package",
  "author": "calabash",
  "license": "MIT",
  "unity": "2018.3",
  "keywords": [
    "calabash",
    "calabash-net"
  ]
}
  • manifest.json 項(xiàng)目需要的包文件列表都在這里,類似于podfile,字段的含義請查閱這里:
    manifest.json的配置
    當(dāng)要引入工程外部的包時(非Embeded包,包括Git,https,本地其他位置的包),都需要在這里配置引入包的名稱和地址;
    mainfest.json的配置.png

本地包根據(jù)創(chuàng)建位置有兩種方式:

1.Embeded Package
  • 首先我們要創(chuàng)建一個Unity工程

  • 在工程文件的Packages文件夾下創(chuàng)建要開發(fā)的包

    內(nèi)置包的創(chuàng)建路徑.png

  • 在包的根目錄下創(chuàng)建 package.json 文件

  • 填寫 package.json 的信息

  • Embeded package不需要修改項(xiàng)目的 manifest.json 文件

回到Unity,項(xiàng)目的 Packages 文件夾下已經(jīng)有了自定義的包;

2.Local Package

如果本地有多個項(xiàng)目,有一些公用的資源和代碼,那么可以把該包放在電腦的某個位置,其他項(xiàng)目的 manifest.json 引用就可以了;鑒于創(chuàng)建包的時候需要Unity的工程項(xiàng)目,我們首先在Unity項(xiàng)目中開發(fā)包,然后把文件夾拖出放到指定的存儲位置;

  • 新建一個空工程,在Assets文件夾下創(chuàng)建包的文件夾
  • 在包的根目錄創(chuàng)建 package.json 文件
  • 按照規(guī)定的目錄結(jié)構(gòu)(見下面說明)創(chuàng)建包內(nèi)容
  • 把創(chuàng)建好的包文件夾拖到指定存儲位置
  • 在需要用到的工程的 manifest.json 配置引用地址即可

通過上面兩種創(chuàng)建方式,我們都可以創(chuàng)建本地包,Unity規(guī)定了自定義包的文件結(jié)構(gòu):

自定義包的結(jié)構(gòu)

有些并不是必須要配置的,各個目錄的含義如下:
Package layout
package.json是必須的;一般情況下使用Runtime文件夾就可以了;
在這個目錄結(jié)構(gòu)中,大家可以看到一些 .asmdef 文件,稱之為 程序集文件,這些文件是可以在Unity中直接創(chuàng)建的,如果沒有這些文件,在包里寫的C#文件并不會被編譯,關(guān)于程序集文件,這里不多贅述,更多資料可以查閱這里:
程序集文件的使用
如果創(chuàng)建了 Tests 文件夾, 在其子目錄中創(chuàng)建的程序集文件需要依賴 Runtime 中的程序集,可以查看這里:程序集的依賴

一般來講,在Unity規(guī)定的位置創(chuàng)建一個就可以了;

Package Manager創(chuàng)建Git包

從Unity2018.3開始,UPM(Unity Package Manager)就已經(jīng)支持Git啦,喜大普奔.
Unity支持Git
網(wǎng)絡(luò)包的創(chuàng)建思路是這樣:

  • 因?yàn)樽远x包的開發(fā)要在Unity環(huán)境下,因此需要一個開發(fā)分支來管理一個Unity工程
  • 發(fā)布的包不應(yīng)該包含除包以外的其他Unity工程資源,因此需要一個子分支來管理
  • 開發(fā)思路就很明確了,兩個分支,一般用master分支來開發(fā),然后使用
git subtree split --prefix=Assets/PackageName --branch upm

命令,發(fā)布到upm分支,其他人使用該分支下載你開發(fā)的包;


開發(fā)包的目錄層次
  • 開發(fā)完成后給upm包打上一個tag:
git tag 1.0.0 upm       
git push origin upm --tags
  • 這樣其他人在自己工程的 manifest.json 就可以按照如下格式配置
    這個 # 后面可以跟分支名稱,tag號,或者commit的HashCode;
    關(guān)于GitUrl配置的更多信息,請查閱:
    Unity中GitUrl的配置
"dependencies": {
        "com.xxxx.packagename": "https://username@xxxxx.git#1.0.0",
}
  • 回到Unity項(xiàng)目中,該Git地址的包就會下載下來了
  • 自定義包的更新也是按照這個流程,更新代碼后,一定記得修改 package.json 文件;

如果不想手動去修改 manifest.json 文件,有一個很好用的開源工具UpmGitExtension,在項(xiàng)目中首先導(dǎo)入這個包,然后使用這個界面工具來下載其他的Git上的包即可:

使用插件管理Git包

Package Manager創(chuàng)建npm服務(wù)器包

后續(xù)更新...

參考文章:
開發(fā)Unity Package插件包

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市粪滤,隨后出現(xiàn)的幾起案子斧拍,更是在濱河造成了極大的恐慌,老刑警劉巖杖小,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件肆汹,死亡現(xiàn)場離奇詭異愚墓,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)昂勉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進(jìn)店門浪册,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人岗照,你說我怎么就攤上這事村象。” “怎么了攒至?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵厚者,是天一觀的道長。 經(jīng)常有香客問我迫吐,道長库菲,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任志膀,我火速辦了婚禮熙宇,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘溉浙。我一直安慰自己烫止,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布放航。 她就那樣靜靜地躺著烈拒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪广鳍。 梳的紋絲不亂的頭發(fā)上荆几,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天,我揣著相機(jī)與錄音赊时,去河邊找鬼吨铸。 笑死,一個胖子當(dāng)著我的面吹牛祖秒,可吹牛的內(nèi)容都是我干的诞吱。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼竭缝,長吁一口氣:“原來是場噩夢啊……” “哼房维!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起抬纸,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤咙俩,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體阿趁,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡膜蛔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了脖阵。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片皂股。...
    茶點(diǎn)故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖命黔,靈堂內(nèi)的尸體忽然破棺而出呜呐,到底是詐尸還是另有隱情,我是刑警寧澤纷铣,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布卵史,位于F島的核電站,受9級特大地震影響搜立,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜槐秧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一啄踊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧刁标,春花似錦颠通、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至启搂,卻和暖如春硼控,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背胳赌。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工牢撼, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人疑苫。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓熏版,卻偏偏與公主長得像捍掺,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子挺勿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內(nèi)容