我發現很多大佬,插件開發者以及Unity官方都在用Dll來保證既可讓使用者正常使用也可有效防止使用者看到自己寫的代碼
版本說明
Visual Studio版本:2019 16.10.3
Unity版本:2019.4.16f1c1
Dll介紹
DLL (Dynamic Link Library) —— 中文:動態鏈接庫
我們 Windows 系統中就有着海量的 dll文件
當多個程序同時使用一個函數庫時, DLL 即減少在磁盤和物理內存中加載的代碼的重復量,同時也提高了響應速度
好處:
- 程序在運行之初無需加載所有代碼,只有在程序執行到某個函數調用時,才從 DLL 中取出
- 使用 DLL 文件還可以減小程序的體積
- 封裝好的 DLL 文件,由於函數已經封裝到 DLL 文件中,不會變更。
所以編輯器不會對我們的 DLL 進行編譯,而是直接運行,程序執行需要時調用的
許多大神,或是插件開發者,都是將代碼封裝為DLL ,並加密。
這樣既提高了運行效率,也保證了代碼的基本安全性,不被他人看到
而本教程,就是教大家講自己寫的通用代碼/需要的代碼,封裝為 DLL 文件,導入項目即可調用使用
創建類庫
框架不用在意。Unity支持最低2.0而Visual studio最低也是2.0,當然越高越好
添加現有項到項目
現在你添加的腳本肯定會報錯,引用了沒有找到的類
引入dll到項目
引用下面只有這些dll,我們要引用Unity提供的dll
從2019版本開始Unity就已經把UnityEngine.dll拆分成了多個dll,具體請看這篇文章:點我查看
unity dll文件地址在Root\Editor\Data\Managed
但有的時候就比如你腳本中用到了UnityEngine.UI,同樣的道理
拿UnityEngine.UI來說,他從2019.3開始就把Unity UI分開了,在package manager里可以看到Unity UI變成了插件的形式
2019.2之后,路徑已經從 Unity安裝目錄下的
Editor\Data\UnityExtensions
移動到了 package里,通過package編譯后生成的dll在工程目錄下的library里
這是Unity UI文檔的鏈接:點我
下面是UnityEngine.UI程序集的具所在位置:(同樣道理,每當創建新項目默認的插件的dll也都會出現在Library里)
導出Dll文件
注意:這里可能會遇到 未能解析主引用“xxx.dll”的錯誤輸出
是因為你導入的dll中的.net高於當前類庫.net
請看我的這篇文章:點擊跳轉
如果沒遇到上面問題,你可能會看到以下輸出:
具體的dll文件在:
導入Unity正常使用
我們把做的dll文件導入unity到Plugins文件夾下面,如果沒有可以自己右鍵創建Folder
我們隨便在腳本中引入剛導入的程序集dll看看效果
可以正常引用命名空間,說明我們成功了
那么如果你能堅持把一篇文章看到最后,我在這里祝你‘代碼永無bug’