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