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