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

    unity3d將C#類封裝打包成DLL

    2019/5/7      點擊(jī):

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    91网站入口_91视频导航_91短视频在线_91视频在线免费观看