自定義程序集(.asmdef文件)二:程序集定義屬性

一、定義程序集屬性窗口

您可以使用程序集定義將項(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 指定要包括在編譯中的軟件包和模塊的版本。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,695評(píng)論 0 5
  • feisky云計(jì)算、虛擬化與Linux技術(shù)筆記posts - 1014, comments - 298, trac...
    不排版閱讀 4,274評(píng)論 0 5
  • 轉(zhuǎn)自:http://blog.csdn.net/highning0007/article/details/3799...
    某人在閱讀 1,936評(píng)論 0 0
  • Android游戲開發(fā)實(shí)踐(1)之NDK與JNI開發(fā)02 承接上篇Android游戲開發(fā)實(shí)踐(1)之NDK與JNI...
    AlphaGL閱讀 3,900評(píng)論 0 24
  • 【2018】 #學(xué)習(xí) 1、易仁永澄的關(guān)于時(shí)間管理的讀書筆記,看了兩遍,有幾條感覺有沖擊。 1)注意力的集中,因?yàn)樽?..
    NancyLuo閱讀 177評(píng)論 0 0

友情鏈接更多精彩內(nèi)容