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