• 您的位置:首頁 > 新聞動態 > Unity3D

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

    2019/5/7      點擊:

    方法一(yī):用vs新建工程-C#庫,添加UnityEngine.dll引用,注意.netframwork選3.5,編譯(yì)C#腳本(běn)得到dll;

    方法二:使用mono的mcs,具體如下

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

    因此在涉及到使用此dll在打包dll的時候就要有點特殊處理。

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

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

    這裏以Windows係統(tǒng)平台為例,大概講解一下(xià)流程:

    1.先進(jìn)入unity的安裝目錄,找(zhǎo)到你引用的dll,地址(zhǐ)類似於C:\Program Files\Unity\Editor\Data\Managed 
    如你引(yǐn)用了(le)UnityEngine.dll,那麽久(jiǔ)複製(zhì)對應的文件。

    2.將複製的文件(jiàn)拷(kǎo)貝到硬盤根目錄,根目錄的緣故是為了接下來(lái)方便操作,也可(kě)以(yǐ)在根目錄下創建一個文件夾,將文件放入(rù)這個文件夾。這(zhè)裏示例為F盤根目錄(lù) 。注意:不建議放在桌麵

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

    4.開cmd界(jiè)麵(miàn),進(jìn)入執行文件的目錄,路徑大概如下 
    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,可以加個(gè)空(kōng)格後(hòu)繼續添加,-target:library是指將文件打包成dll,F:\DebugCustom.cs是(shì)你要(yào)打包成dll的文件,如果(guǒ)文件有多個(gè),同樣加空格然後在後麵添加

    上麵就是流程了,看完了後不知道有沒有看出問什(shí)麽會有(yǒu)上麵那個注意了,第五條中空格很關鍵,而我們(men)桌麵的(de)路徑有的會有空格,win7的(de)沒(méi)有,好像是Xp有,所以隻是不建議,而(ér)不(bú)是不能。大家根據自己的情況調整就行(háng)。

     引申:混淆器可(kě)以用來安全保護編譯後(hòu)的dll,具體原(yuán)理是去除代碼中(zhōng)所有的symbol信息(xī)。

    日本中出视频|午夜免费福利在线|亚洲精品亚洲人成在线下载|国产高潮流白浆免费观看不卡|偷拍亚洲欧美|亚洲中文字幕久爱亚洲伊人|久久久久香蕉视频|国产欧美日韩一区|久久国产成人亚洲精品影院老金|久久久久中文字幕