為什麼經常會遇到,在編輯器裡運行腳本沒問題,等打包出來卻不能使用呢?
原因是unity3d默認僅會引用幾個常用的dll,所以寫一般的代碼不會出什麼問題!但其它的呢?最典型的是System.Data.dll,它主要是跟數據庫操作有關的,如果你代碼有引用到它就必須到..\Unity\Editor\Data\Frameworks\Mono.framework中把它拷到Assets目錄下(mono是開源的,你想看它的源代碼用.NET Reflector吧!),不然可能在編輯器中運行沒問題打包後就會出錯了。
另外囉嗦下,如果你是用VS寫代碼的話,添加引用最好到.\Unity\Editor\Data\Frameworks\Mono.framework裡面去引用,此時編輯器如果有出錯的話應該是unity3d默認沒引用到它,那必需到..\Frameworks\Mono.framework把相應的dll複製到Assets目錄下,這樣才能保證最終打包的結果跟編輯器運行的結果是相符的。


可能有人說,我都按上面的做了,打包出來還是有錯呀!比如,NotSupportedException: CodePage 936 notsupported。這其實是國際化的問題了,一般弄數據庫的時候或是編碼轉換時會出現這問題!例如調用這個方法System.Text.Encoding.GetEncoding("gb2312")編輯器中運行不會有問題,打包後就會出現這問題。那麼請注意在..\Frameworks\Mono.framework下你可以看到這麼幾個文件


它們命名可是有講究的哦!為什麼把I18N作為“國際化”的簡稱:其來源是英文單詞internationalization的首末字符i和n之間的字符數為18。 I18N.dll這是基礎,看中間部分West、MidEast、CJK……不用說大家也知道什麼意思吧!一般中文我們用I18N.CJK.dll(中日韓)、I18N.West.dll外加I18N.dll就夠了,打包前把它拷到Assets目錄下的任一文件夾下就行了。

附上一個連接mysql的工程文件,支持web player。


補充(2009.11.22):如果想連接Microsoft SQL Server還必需要有Mono.Data.Tds.dll、Mono.Data.TdsClient.dll這兩個文件(..\Unity\Editor\Data\Frameworks\Mono. framework目錄下有),不過這種連接方式並不支持web player,錯誤信息如下:
System.Security.SecurityException: This method is not supported in the unity web player for security reasons.


來源 : http://www.xinlianw.com/read.php?tid-1783.html

arrow
arrow
    全站熱搜

    黃彥霖 發表在 痞客邦 留言(1) 人氣()