unity3d將C#類封裝打包成DLL
方法一:用vs新建工程-C#庫,添(tiān)加UnityEngine.dll引用,注(zhù)意.netframwork選3.5,編譯C#腳本得到dll;
方法二:使用mono的mcs,具體如下
c#提供了dll打包,但是unity中由於涉(shè)及到unity的自身dll,如UnityEngine.dll,我們一般寫(xiě)的很多代碼都會涉及到對(duì)這個dll的引用,在unity中建代碼文件都會默認添加對此dll命名空(kōng)間的(de)使用,using UnityEngine;
因此在涉及到使用此dll在打包dll的時候就要有點特殊處理。
項目中常見的是對Debug的二次封(fēng)裝,由於調試的需(xū)求(qiú),在項目開發周期debug是個很重要且常用的(de)類,但是debug的效率實(shí)在是不忍直視,所(suǒ)以在打包apk時出於效(xiào)率考慮就要屏蔽掉debug的調試,這時要做的可(kě)能(néng)是(shì)刪除掉所有對應的代碼,這基本上(shàng)是不(bú)可能的,不說這些調試代碼可能(néng)以(yǐ)後會用到,每(měi)次打包都刪一次也不實際。還(hái)有一(yī)種是設定bool值,每次調用Debug類的時候,判定此bool值,每次都要判定,這本書就(jiù)代碼冗餘,設計(jì)的不合理。這裏大家想到的可能(néng)都是(shì)二次封(fēng)裝了。在封裝一個(gè)類,調用Debug的時候調用封裝的類,但是這又設計到一個問題,Debug調試的一個重要(yào)功能就是顯示在控製台的信息雙擊可以跳到指定代碼,如果這(zhè)樣二次封裝的話就每次跳到封裝的(de)代碼裏,而不是我們想要的地(dì)方。有人說可以看堆棧調用信息,可是每次都看,很累的。對於這個問題(tí),便(biàn)是將二(èr)次封裝類(lèi)進行(háng)dll打包。
囉(luō)嗦了一大堆,隻是說明為什麽要(yào)對Debug進行二次封裝和為什麽要用dll的原因,具體方法如下,unity官方提供了相應的教程。
這裏以Windows係統(tǒng)平台(tái)為例,大概講解一下流程:
1.先進入unity的安(ān)裝(zhuāng)目錄,找到你引用的dll,地址類似於C:\Program Files\Unity\Editor\Data\Managed
如你引用了UnityEngine.dll,那麽久複製(zhì)對應的文件。
2.將複製的文件拷貝到硬盤根(gēn)目錄,根(gēn)目錄(lù)的緣故是為了接(jiē)下來(lái)方便操作,也可以在根目錄下(xià)創建一個文件夾(jiá),將文件放(fàng)入這個文件(jiàn)夾。這裏示例為(wéi)F盤根目錄 。注意(yì):不建議放在(zài)桌麵
3.將你要打包dll的文件複製到同(tóng)個(gè)地方(示例為F盤根目錄)
4.開cmd界麵,進(jìn)入執行文件的目錄,路徑大概(gài)如下
C:\Program Files (x86)\Unity4.6\Editor\Data\MonoBleedingEdge\lib\mono\2.0
根據自己的安裝目(mù)錄進行參考
5.執行命令,命令大概如下
mcs -r:F:\UnityEngine.dll -target:library F:\DebugCustom.cs
其中mcs是命令是要執行的命令,F:\UnityEngine.dll是引用的dll,如果你引用了多個dll,可(kě)以加(jiā)個空格(gé)後繼(jì)續添加,-target:library是指將文件打包成dll,F:\DebugCustom.cs是你要打包成dll的文件,如果文件有多個,同樣加空格(gé)然後(hòu)在後麵添加
上麵就是流(liú)程了,看完(wán)了後不知道有沒有(yǒu)看(kàn)出問什麽會有上麵(miàn)那(nà)個(gè)注意(yì)了,第五條中空格很關鍵,而我們桌麵的路徑有的會有空格,win7的沒有,好像是Xp有,所以隻是不建議,而不是不能。大(dà)家根據自己的情況調整就行。
引申:混(hún)淆器可以用來安全保護編譯後的dll,具體原理是去除代碼中所有的(de)symbol信息。
- 上一篇:C#與C++數據類型對應總結 2019/5/9
- 下一篇:unity3d給物體增加扭(niǔ)矩力 2019/4/9