筆者按:使用Unity版本為2021.3LTS,與其他版本或有異同。請(qǐng)僅做參考
一、簡(jiǎn)述。
本文是筆者在學(xué)習(xí)使用Unity引擎的過(guò)程中,產(chǎn)學(xué)研的一個(gè)筆記。由筆者根據(jù)官方文檔Unity User Manual 2021.3 (LTS)/腳本/Unity 架構(gòu)/腳本編譯/程序集定義相關(guān)部分結(jié)合自身經(jīng)驗(yàn)所做,有不足之處,還請(qǐng)指正。
二、導(dǎo)讀。
1.==程序集定義(Assembly Definition)和程序集引用(Assembly Definition Reference)==是可創(chuàng)建用于將腳本組織為程序集的資源。
2.Unity代碼工程一般默認(rèn)創(chuàng)建兩個(gè)程序集:Assembly-CSharp(非Editor目錄下腳本歸于此程序集) 和Assembly-CSharp-Editor(任何Editor目錄下腳本都自動(dòng)歸于此程序集)。
3.使用默認(rèn)程序集,對(duì)于小項(xiàng)目而言可以接受。但項(xiàng)目過(guò)大會(huì)有以下缺點(diǎn):
1.腳本有改動(dòng)時(shí),Unity會(huì)重新編譯當(dāng)前程序集下所有腳本,過(guò)多腳本會(huì)導(dǎo)致編譯時(shí)間冗長(zhǎng)。
2.理論上同一程序集內(nèi)任何腳本都可相互訪問(wèn)引用,導(dǎo)致項(xiàng)目耦合度高,難以重構(gòu)和優(yōu)化改進(jìn)代碼。
3.所有腳本都針對(duì)所有平臺(tái)進(jìn)行編譯。
4.定義程序集,有以下優(yōu)點(diǎn):
1.促進(jìn)模塊化和可重用性。
2.提升編譯效率。
3.提升代碼的平臺(tái)適配性。
三、程序集定義。
1.程序集定義,可以把你想單獨(dú)成模塊的腳本目錄給獨(dú)立出來(lái),到一個(gè)程序集中。
2.為每個(gè)程序集創(chuàng)建一個(gè)文件夾(圖3-2-1),并將需要?dú)w入此程序集的腳本移入到文件夾目錄中去(圖3-2-2),然后再創(chuàng)建程序集定義資源以指定程序集屬性(圖3-2-3)。
3.新建的Assembly Definition Asset的屬性面板如下:
逐項(xiàng)解釋?zhuān)?br> [Name] ——程序集名稱(chēng),一般在創(chuàng)建時(shí)便被定義,可修改;
General一般屬性
[Allow ‘unsafe’ Code]是否允許使用不安全的編碼;
[Auto Referenced]程序集之間是否根據(jù)編譯順序自動(dòng)引用相應(yīng)的程序集;
當(dāng)不同程序集之間存在引用關(guān)系時(shí),程序集之間就會(huì)存在依賴(lài)關(guān)系。A引用B,A依賴(lài)B。當(dāng)Unity編譯腳本時(shí),B必須先于A被編譯好。如此A才可以訪問(wèn)其依賴(lài)項(xiàng)的已編譯版本。A的程序集必須聲明對(duì)程序集B的引用。
[No Engine References]不引用(相關(guān))的程序集引用
[Override References]對(duì)預(yù)編譯程序集的引用,覆蓋對(duì)預(yù)編譯程序集的自動(dòng)引用情況。一般為動(dòng)態(tài)鏈接庫(kù)(dll)
[Root Namespace]當(dāng)前程序集的默認(rèn)命名空間,在當(dāng)前程序集中新建腳本時(shí)有用文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-607754.html
Define Constraints定義約束條件。通過(guò)相應(yīng)的“宏定義”來(lái)控制程序集的是否編譯的行為。
–Assembly References–(與Override References 一起使用)選擇需要引用程序集的程序集定義添加進(jìn)來(lái)
Assembly Definition References程序集定義引用。
[Use GUIDs]勾選此選項(xiàng),可以允許引用的程序集修改名稱(chēng)而不受影響。提倡勾選
Platforms設(shè)置程序集的平臺(tái)兼容性
Version Defines對(duì)不同的程序集進(jìn)行不同的配置與定義。
3.新建程序集定義的文件。
*.asmdef。內(nèi)部編碼遵循Json格式,故而除了可以在屬性面板上修改之外,也可以直接修改Json。
四、程序集定義引用。
1.程序集定義引用,就是把當(dāng)前目錄下的腳本合并到指定程序集定義當(dāng)中去。
2.創(chuàng)建程序集定義引用(Assembly Definition Reference)資源。
在Project窗口中找到需要包含到引用程序集中的腳本文件夾,點(diǎn)擊(Assets->Create->Assembly Definition Reference),定義名稱(chēng)。
3.新建程序集定義引用屬性面板。
[Use GUID]使用程序集的Guid而非Name。
[Assembly Definition]指定對(duì)應(yīng)的程序集定義。
4.新建程序集定義引用的文件。
*.asmref。內(nèi)部編碼遵循Json格式,故而除了可以在屬性面板上修改之外,也可以直接修改Json。
五、以上就是程序集Assembly相關(guān)的部分。如果想了解更多,建議去官網(wǎng)文檔直接找程序集篇。有什么想法,也可以和筆者討論。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-607754.html
到了這里,關(guān)于【Unity】程序集Assembly模塊化開(kāi)發(fā)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!