Unity3D引用(yòng)dll打包發布的問(wèn)題及解決
今年我們開始使用Unity3D開發MMORPG,腳本語(yǔ)言使用C#,這(zhè)樣我們就可以使用以往積累的(de)許多類庫。但是,在(zài)U3D中使用.NET dll的過程(chéng)並不是那(nà)麽順利,比如(rú)我(wǒ)們今天(tiān)遇到的這(zhè)種問題。
一(yī).問題(tí)出現
我們在當前的一(yī)個U3D項目中使用了StriveEngine作為通信組件與服務端進行通信,在U3D環境中,編譯運行一切正常,但在打包發(fā)布(Build)為PC版本可執行文件時,卻出現錯(cuò)誤:“ArgumentException: The Assembly System.Management is referenced by StriveEngine. But the dll is not allowed to be included or could not be found.”
初,我(wǒ)以為是簽名或者是加密混(hún)淆的問題,於是我使用原(yuán)始編譯生成的StriveEngine.dll,問題一(yī)樣存在。
接(jiē)著,我再猜測可能是StriveEngine.dll編譯時選擇平台的問題,於是把目標平台由anycpu更(gèng)改為x86,重新生成StriveEngine.dll,並且在u3d打包發布也選擇x86。
二.解決方案
經(jīng)過一番折騰,終(zhōng)於(yú)發現需要(yào)設置一下U3D所使用(yòng)的.NET版本 -- 點擊Player Settings按鈕,找(zhǎo)到Api Compatibility Level選(xuǎn)項,選擇".Net 2.0",而(ér)非".Net 2.0 Subset",如下圖所示(shì):
這個選項的意思是說,要使用.NET 2.0的完整版本,而非(fēi)其子集(jí)。經(jīng)過此設置,終於可以打包發布成功。
究其原因,看來是因為StriveEngine所使用的是完(wán)整版本.NET 2.0。
三.又現困境
由於我們的遊戲會(huì)打算發布一個輕量級的Web版本,於是,我們嚐試將其打包發布為Web版,god,同樣的問(wèn)題又出現(xiàn)了,而且,在發布Web版本的情況下,Api Compatibility Level是不可選擇的。
猜(cāi)測發布Web版本隻能使用.Net 2.0 Subset。
四.如何走出困境?
如果(guǒ)發布Web版本就隻能使用.Net 2.0 Subset這個猜想是正確的,那麽,我想基於.Net 2.0 Subset開發一個StriveEngine.U3D.dll,使其可以被打包發布到各種不通類型(xíng)的平台。可是,.Net 2.0 Subset 具體指的是哪個子集了(le)?是.NET Compact Framework?還是SilverLight提供的.NET Framework?抑或是其它(tā)?
- 上一篇:UNITY3D處理碰撞事(shì)件的封(fēng)裝類 2018/9/22
- 下一篇(piān):MotionBuilder綁定C3D動作到模型身上 2018/9/6
