一、定義程序集屬性窗口
您可以使用程序集定義將項(xiàng)目中的腳本組織到程序集中。在文件夾中創(chuàng)建程序集定義資產(chǎn)時(shí),Unity將從該文件夾中的所有腳本中編譯一個(gè)單獨(dú)的托管程序集。
腳本中的子文件夾都包括在內(nèi),除非子文件夾都有自己的程序集定義。這程序集會(huì)編程成Unity項(xiàng)目中的單個(gè)庫(kù)。
在Asset中單擊 程序集定義文件,以在 Inspector 窗口中設(shè)置其屬性。

定義程序集屬性
二、Json格式
程序集定義是一個(gè)文本文件,文件擴(kuò)展名為.asmdef,其中包含定義[程序集定義屬性]的JSON字符串。
你可以使用外部編輯器直接編輯JSON。有關(guān)JSON語(yǔ)法的信息,
{
"name": "MyAsmdef",
"references": [
"Com"
],
"optionalUnityReferences": [],
"includePlatforms": [],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": []
}
三、屬性描述
| 屬性 | 描述 |
|---|---|
| Name | 程序集的名稱(不帶文件擴(kuò)展名)。程序集名稱在整個(gè)項(xiàng)目中必須唯一??紤]使用反向DNS命名方式,尤其是如果您要在多個(gè)Project中使用程序集時(shí),請(qǐng)考慮使用這種方式。 注意: Unity使用您分配給裝配定義資產(chǎn)的名稱作為“ 名稱”字段的默認(rèn)值,但是您可以根據(jù)需要更改名稱。 |
| General | |
| Allow ‘unsafe’ code | 如果在程序集中的腳本中使用了C#關(guān)鍵字,則啟用“ 允許不安全”代碼選項(xiàng)/unsafe。啟用此設(shè)置后,Unity /unsafe在編譯程序集時(shí)會(huì)將選項(xiàng)傳遞給C#編譯器。 |
| Auto Referenced | 指定是否所有預(yù)定義程序集都應(yīng)引用此Project程序集。啟用此屬性后,預(yù)定義程序集引用項(xiàng)目中定義的所有程序集,這與預(yù)定義程序集引用預(yù)編譯程序集(插件)的方式匹配。禁用文件的自動(dòng)引用設(shè)置后,Unity不會(huì)在編譯過程中自動(dòng)引用文件。這對(duì)Unity是否在構(gòu)建中包括它沒有影響。您可以在“ 平臺(tái)設(shè)置”中控制插件的“ 構(gòu)建設(shè)置”。 |
| Override References | 啟用“ 替代引用”設(shè)置以手動(dòng)指定此程序集依賴哪個(gè)預(yù)編譯程序集。啟用“ 覆蓋引用”時(shí),檢查器將顯示“ 程序集引用”部分,可用于指定引用。 預(yù)編譯程序集是在Unity項(xiàng)目外部編譯的庫(kù)。默認(rèn)情況下,您在Project中定義的程序集會(huì)引用添加到Project中的所有預(yù)編譯程序集,這與預(yù)定義程序集如何引用所有預(yù)編譯程序集相匹配。當(dāng)您啟用覆蓋參考,該組件只引用您在添加預(yù)編譯的組件集引用。注意:為防止Project程序集自動(dòng)引用預(yù)編譯的程序集,可以禁用其“ 自動(dòng)引用”選項(xiàng)。有關(guān)更多信息,請(qǐng)參見插件檢查器。 |
| No Engine References | 啟用此屬性后,Unity在編譯程序集時(shí)不會(huì)向UnityEditor或UnityEngine添加引用。 |
| Define Constraints | 指定#define必須定義的編譯器指令才能編譯或引用程序集。如果滿足所有“ 定義約束”,則Unity僅編譯和引用Project程序集。約束的工作方式類似于#ifC#中的預(yù)處理程序指令,但是約束在程序集級(jí)別而不是腳本級(jí)別。您必須在“ 定義約束”設(shè)置中定義所有符號(hào),才能滿足約束條件。要指定必須未定義的符號(hào),請(qǐng)?jiān)谄淝懊婕由弦粋€(gè)負(fù)號(hào)!(bang)。例如,如果您將以下符號(hào)指定為“ 定義約束”:!ENABLE_IL2CPP UNITY_2018_3_OR_NEWER 當(dāng)ENABLE_IL2CPP未定義符號(hào)且符號(hào)未定義時(shí),滿足約束UNITY_2018_3_OR_NEWER被定義為。換句話說,該程序集僅在Unity 2018.3或更高版本的非IL2CPP腳本運(yùn)行時(shí)上編譯和引用。 您可以使用Unity的任何內(nèi)置#define指令或在Project的Scripting Define Symbols Player設(shè)置中定義的任何符號(hào)。有關(guān)更多信息,請(qǐng)參見平臺(tái)相關(guān)的編譯,包括內(nèi)置符號(hào)的列表。請(qǐng)注意,腳本定義符號(hào)設(shè)置是特定于平臺(tái)的。如果使用此設(shè)置來定義是否使用部件,請(qǐng)確保在所有相關(guān)平臺(tái)上定義必要的符號(hào)。 |
| Assembly Definition References | 指定對(duì)使用程序集定義資產(chǎn)創(chuàng)建的其他程序集的引用。 Unity使用這些引用來編譯程序集,并定義程序集之間的依賴關(guān)系。 |
| Use GUIDs | 此設(shè)置控制Unity如何序列化對(duì)其他Assembly Definition Assets的引用。啟用此屬性后,Unity會(huì)將引用保存為資產(chǎn)的GUID,而不是程序集定義名稱。最好使用GUID代替名稱,因?yàn)檫@意味著您可以更改部件定義資產(chǎn)的名稱,而不必更新引用該部件的其他部件定義文件。 |
| Assembly References | 僅在啟用“ 替代引用”屬性時(shí)顯示。使用此區(qū)域可以指定對(duì)該程序集所依賴的預(yù)編譯程序集的任何引用。 |
| Platforms | 設(shè)置程序集的平臺(tái)兼容性。Unity僅在包括(或不排除)的平臺(tái)上編譯或引用此程序集。 |
| Version Defines | 指定要包括在編譯中的軟件包和模塊的版本。 |