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