• 您(nín)的位置(zhì):首頁 > 新聞動態 > Unity3D

    unity3d將C#類封裝(zhuāng)打包成DLL

    2019/5/7      點擊:

    方法一:用vs新建工程-C#庫,添加UnityEngine.dll引用,注意.netframwork選3.5,編譯C#腳本得到(dào)dll;

    方法二:使用mono的mcs,具體(tǐ)如下

     c#提供了dll打包,但是unity中由於涉及到unity的自(zì)身dll,如(rú)UnityEngine.dll,我們一般寫的很多代碼(mǎ)都會涉及到對(duì)這個dll的引用,在unity中建代碼文件都會默認添加(jiā)對此dll命名空間的使用,using UnityEngine; 

    因此在涉(shè)及到使用此dll在打(dǎ)包dll的時候就要有(yǒu)點特殊處理。

    項目中常見的是對(duì)Debug的二次封裝,由於調(diào)試的需求,在項目開發周(zhōu)期debug是個很重(chóng)要且常用的類,但是debug的效率實在是不忍直視,所以(yǐ)在打包apk時出(chū)於效率考慮就要屏蔽掉debug的調試,這時要做的可能是刪除掉所有對應的代碼(mǎ),這基本上是不可能的(de),不說這些調試(shì)代碼可能以後會用到,每次打包都刪一次也不實(shí)際。還有一種是設定bool值,每次(cì)調用Debug類的時候,判定此bool值,每次都要(yào)判定,這本書就(jiù)代碼冗餘,設計的不合理。這裏大家想到的可能都是二次封裝了。在(zài)封(fēng)裝一個類,調用Debug的時候調用封裝的類,但是這又(yòu)設計到一(yī)個(gè)問題,Debug調試的一個重要功能就是顯(xiǎn)示在控製台的信息(xī)雙擊可以跳到指定代碼,如果這樣二(èr)次封(fēng)裝的話就每次跳到封裝的代碼裏,而不是我們想(xiǎng)要的地方。有人說可以看堆棧調用信息,可(kě)是每次都看,很累的。對於這個問題,便是將二次封(fēng)裝類進行dll打包。

    囉嗦了一大堆,隻是說明為什麽要對Debug進行二次封裝和為什麽要用dll的原因,具體方法如下,unity官方提供了相應的教程(chéng)。

    這裏以Windows係統平台為例,大概講解一下流程:

    1.先進入unity的安裝目錄,找到(dào)你引用的dll,地址類似於C:\Program Files\Unity\Editor\Data\Managed 
    如你引用了(le)UnityEngine.dll,那麽久複(fù)製對應的文件。

    2.將複製(zhì)的文件拷貝到硬盤根目錄,根目錄的緣故是為了接下來方(fāng)便操作,也可以在根目錄下創建一個文件夾,將文件放入這個文件夾。這裏示例為F盤根目錄 。注意(yì):不建議放在桌麵

    3.將你(nǐ)要打包dll的文件複製到同個地方(示例為F盤(pán)根(gēn)目錄)

    4.開cmd界麵,進入執行文件(jiàn)的目錄,路徑大概如下 
    C:\Program Files (x86)\Unity4.6\Editor\Data\MonoBleedingEdge\lib\mono\2.0 
    根(gēn)據自己的安裝目錄進行參考

    5.執行命令,命令大概如下 
    mcs -r:F:\UnityEngine.dll -target:library F:\DebugCustom.cs 
    其(qí)中mcs是命(mìng)令是要執行的命令,F:\UnityEngine.dll是引用的(de)dll,如果你引用了多(duō)個dll,可以加個空格後繼續添加,-target:library是指將文件打包成dll,F:\DebugCustom.cs是你要打包成(chéng)dll的文件,如果文件(jiàn)有多個,同樣加空(kōng)格然(rán)後在後麵添加

    上麵就(jiù)是流程了,看完了後不知道有沒有看出問什麽會有上麵那個注意了,第五條中空格很(hěn)關鍵,而我們桌麵的路徑有(yǒu)的會有空格,win7的沒有,好像是Xp有,所以(yǐ)隻(zhī)是不建議,而不是(shì)不能。大家根據自己的情況調整就行。

     引申:混淆器可以用來安(ān)全保護編(biān)譯後的dll,具體原理是去除代碼中所有的symbol信息。

    网站地图 正能量网-传播正能量弘扬主旋律-免费正能量网站www正能量-免费正能量网站www正能量下载在线观看官网