最近接手一個項目,遇到了幾個坑,記錄一下。
項目簡介:這是一個最後跑在PC上的3D沙盒的遊戲級企業應用,裏面有些3D巡遊,有些企業教學,有些企業演練。用Unity3D製作,需要連接企業的數據庫。
接手情況:項目使用unity3D 4.3製作,一些組件的拼湊,一些功能已經可以用了,但是毛病一堆。有一些會用C#的做了網絡的dll,放到unity裏來用。
接手後的第一項工作就是轉成Unity5最新版,畢竟4已經不再維護了,如果能轉,早轉了還是很好的。
遇到的問題:
1 更新NGUI 到Unity5,裏面的屏幕匹配有些問題,UISprite的width和height在屏幕大小不全屏的時候有問題,有時需要匹配下 sp.width = 480 * 1920 / Screen.width
UIPopupList彈出的列表位置不匹配,這個類的末尾把offset的幾行刪了就可以了,這個應該在後續的版本中會被修正。
2 更新PlayMaker到Unity5,主要有一個API變更了,UnityEngineInternal.APIUpdaterRuntimeServices.AddComponent 替換成var t = System.Type.GetType(component.Value); addedComponent = go.AddComponent(t);就OK了。
3 烘焙的方式在Unity5全部更新了,場景中的模型文件有些UV展得很不均勻,導致燈光照射時各種問題。
4 連接數據庫原來必須要客戶端安裝 oracle客戶端,現在把這個客戶端裏的那些dll拿過來,設置成x86的就可以了,注意64位的Unity還是會有問題,暫時還用32位的吧。
5 原來的網絡部分是同步的,敲代碼修改爲異步,注意鎖公用的消息隊列。
6 原來的配置文件位置錯誤,現在扔到StreamingAssets目錄下,log文本輸出,現在扔到 persistentDataPath目錄下。
7 shader可以替換爲現在通用的 Standard 。越來越傻瓜了
就這些吧,已經可以在unity5下正常打包了。