Unity原廠講師大解密

2022-03-23 18:48:45 字數 2737 閱讀 1015

本文**自:

asset bundle工作流程及人物換裝例項 - 劉剛

ab選項的差異

透過web player下載asset bundle的cache需要收費,在ios,android的cache不需收費。--->手持遊戲卯起來用!!!

瀏覽器本身也有cache,為什麼要用unity的cache?

assetbundle.createfrommemory:大多數用在對內容作加解密,無法cache,也就是每次執行都要下載一次,script也可加密

assetbundle.createfromfile

每開乙個www用來下載assetbundle,就要用掉8mb的buffer,所以www下載完要作以下動作來清掉那8m:

assetbundle可以作dependency!!!

假設push以下資源:a,b,c,透過push&pop,可以產生3個packege,c依賴b,a,b依賴a,a獨立的asset bundles,完全不會重複包資源!

在乙個prefab裡面會有mesh,material,shader,texture,script,都應該分開包,load的時候再按照順序load回來,再配合上cache機制,已經下載過的asset bundle就不需再下載一遍,可以達到資源、頻寬的最佳使用-->不過這個資源相依的邏輯必須要設計清楚,否則會很亂

官方的實務建議是每個asset bundle在1m左右,太小下載次數會過多,太大下載時間過久。

可以把script放在scriptobject裡面,再透過asset bundle載回來,如此就不需一定要將script放在第一包。

官方demo案例,透過dependency的使用可將131mb大小縮成8.2m!

角色紙娃娃的處理方式,可以參考unity提供的character customization範例,看裡面如何拆分asset bundle。

地圖處理方式,可以把地圖拆成多個子場景,在主角移動時即時下載,即時顯示。

asset bundle有crc機制,如果下載有問題會自行重新下載

code安全性

大規模場景的資源拆解和動態載入-張鑫

推薦拆分工具:terrain composer,最大可以拆8x8,每塊大小2000x2000,也就是16000x16000,也就是16kmx16km

如果地形早就已經編好一堆了,該怎麼辦?自行拆分

地形資源怎麼拆?先生成空的nxn的terrain

地表資料怎麼拆?

拆好了, 如何顯示?

載入時間比較:

object pool範例請參考angrybot裡面的子彈

現場demo拆分後的場景,畫面精細度很好,地圖超過4096x4096,飛機一邊飛一邊動態下載assetbundle後顯示地形,fps在50以上,在主流手機上也順暢。

使用unity引擎開發3d網頁遊戲 - 劉剛

記憶體leak,4.1.2的profile可以看到所有gameobject的狀態,請多用profiler

動態載入,用scriptableobject定義場景描述檔,記錄dependency,然後根據這些資料來載場景內容。

coroutine在unity不是multi thread,多用還是會拖main thread,請慎用。

在乙個新場景或新關卡,把material與shader先load出來,放到乙個空的gameobject裡面,然後diactive,有需要在放到正確的地方。-->第二次提到

assetbundle打包顆粒度,debug可以包越小越好,release建議1mb

封住右鍵功能,防止使用者更換unity player版本。

從放遊戲的web server上取其他url的資源,要設定crossdomain.xml

如果不用asset bundle,自行作壓縮解壓縮,一定要在載下來的時候馬上解壓縮,而且用assetbundle.createfrommemory,耗時。-->assetbundle的確是要load才需要解壓...

material,shader先打包吧!-->這應該算第三次提到吧?因為很重要所以要講三次??

unity的網路解決方案

unity引擎的效能優化 - 張鑫

static object

地形:texture數量<4,用texture融合,可加5fps~10fps

texture格式

mesh簡化,用meshlab,但只能簡化靜態mesh。用simplygon,

mesh簡化,animation簡化,用simplygon,要錢,效果好。

不要用system.xml用mono.xml,減少程式碼大小

forwarding light原理,要draw的object數量x光源數,所以光源越少越好。

把pixel light設定固定值,美術再多光也只有乙個。

粒子在mobile平台,是以block為單位render,太多粒子會加高畫素填充率,因為粒子沒有深度,所以一定要畫,mobile平台的功率不夠就會大大拖效能。

盡量不使用mesh colider,用box,capsulecollider

animation部分

renderer部份

mobile平台的occlusion culling適合用pvs and dynamic objects

用for代替foreach,因為foreach會生一堆iterator

用struct代替class,快30倍

傳說中8小時一定回信的高階email support

影子的優化,可參考shadowgun模擬影子的實作

接下來unity的roadmap會支援新ui(講好久了)與server。

Unity原廠講師大解密

本文 自 牆外 筆記 20131030 unity原廠講師大解密 ab選項的差異 瀏覽器本身也有cache,為什麼要用unity的cache?assetbundle.createfromfile assetbundle可以作相關性!假設push以下資源 a,b,c,透過push pop,可以產生3個...

雪鐵龍原廠儀安裝注意事項

1.windows7 32位系統,其他的系統可能產生問題,所以最好用windows7 32位作業系統 2.需要關掉網路,關掉防毒軟體 3.所有的步驟在視屏中都能看到 4.版本7.02和版本7.57是最穩定的版本,最完美。如果7.57能夠滿足你的需求,沒必要花很多時間去公升級更高的版本 5.雪鐵龍的原...

刷OPENWRT後悔了,刷回原廠韌體教程

之前之所以要刷韌體,是因為上網時經常將網頁重定向到路由器的管理員介面,如果你也有這種問題,那麼不用刷了,直接找售後換貨或退貨,這是路由器質量問題,刷機沒法解決。原文 菜鳥tl mr11u刷openwrt後悔了,刷回原廠韌體教程 1.刷openwrt後,上網絡卡無法驅動,只好刷回原廠韌體!這時你會發現...