• unity3d將C#類封(fēng)裝打(dǎ)包成(chéng)DLL

    2019/5/7      點擊:

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

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

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

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

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

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

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

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

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

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

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

    5.執行命(mìng)令,命令大(dà)概如下 
    mcs -r:F:\UnityEngine.dll -target:library F:\DebugCustom.cs 
    其中mcs是(shì)命令是要執行的命令,F:\UnityEngine.dll是引用(yòng)的dll,如果你引用了多個(gè)dll,可以加個空格後繼續添(tiān)加,-target:library是指將文(wén)件打(dǎ)包成dll,F:\DebugCustom.cs是你(nǐ)要打包成dll的文件,如(rú)果文件有多個,同樣加空格然後在後麵添加

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

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

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