assetbundle能不能删除_Unity3d爬坑篇(2)之Assetbundle、Shader和Keyword
本系列基于:BDFramework 、Unity3D 2018.4.0
BDFramework:Simple! Easy! Beautiful! This is a powerful Unity3d game workflow!
框架地址:
GayHub: yimengfan/BDFramework.Core,
碼云 : yimengfan/BDFramework.Core歡迎賞星。
第九藝術 、第十藝術討論群 : 763141410
爬坑關鍵字,方便其他小伙伴搜索: Assetbundle Shader異常, keyword Assetbundle打包。
進入今天的主題,如果你問我,人能不能改變自己的命運,我不曉得,我只曉得出包就是我的命.
0x001:問題引出
很早以前,我們遇到了這樣的問題 : 打包成AssetBundle后,移動端現實的效果異常,具體怎么個異常法,比較隨機:
于是乎我們開始苦逼排查:
1.Shader的平臺性問題(此時的shader并沒打成ab):經過我們驗證,pc端切換到Android平臺,加載Android的ab包,顯示正常。此時就很納悶,why?
當時我們認為,shader沒有帶進包體。
2.于是乎我們就提出第二個問題:Android上Shader怎么打進包體,并被正常引用的?
無論怎么百度,你都會得到下面的結果:
大家都會一堆的,往這上面答。當時我想,這個是打包時候需要帶進包體的shader。當時我就內心一頓mmp,發出靈魂3問:莫非在我發完版本之后就不能使用新shader了?使用新shader只能重新發包?Shader不能打Assetbundle?
于是乎,半小時后,enmmmm,我覺得能用就行了,解決包要緊,包要緊.
即使這樣,也是接著狗帶 ,再次嘗試失敗。
3.于似乎,我只能去google搜shader和Assetbundle的問題了。
當時我內心各種wtf,老外不做熱更的么?老外不打 Assetbundle的么?
終于我在Unity的社區里,找到了關鍵字Keyword。
0x010: Keyword
首先,想看到keyword,你需要在inspector下進行卐解:
這時候 你打開材質球,就能看到 keyword
keyword,你可以看成是Shader中的一種特殊宏。一般內置shader會在面板上很多選項,選項開關,就產生一個shader變體。而我們打包shader時候,并沒有打包正確的shader變體,所以shader會 顯示,但是不正常,是因為keyword丟失。
關于Keyword又要解釋:multi_compile與shader_feature,
關于更多的解讀,看下面這個鏈接:
https://blog.csdn.net/RandomXM/article/details/88642534?blog.csdn.net我們主要關心怎么解決這個問題。
問題找到后,我們就更好處理了,順便還解決我們上面兩個疑問:
1.shader可以單獨打包成ab,所以建議把unity內置shader全部放到項目工程中 !!!(這個很重要)像這樣的當個勇士!!!
2.關于keyword怎么打包進AB。首先你需要一個.ShaderVariant 文件,這個可以自行百度。然后選擇Shader 自己手擼Keyword完事~然后需要把這個ShaderVariant 和對應shader打包到一個ab包中,會自動加載。這樣keyword就正常了~~
最后:
你以為這樣就完事了?太天真了吧!!!
一個項目中,百來個Shader總要用的吧,然后 每個shader,多少變體,特別 unity內置shader,一堆keyword,總計變體幾十萬個,你還需要一個個手擼?
當然BDFramework,送了你一個大禮包啊~
一鍵收集 Keyword,0冗余~
關于編輯器過程 ,還是比較復雜的,先是刷了所有使用到的keyword,然后和shader本身求交集,再把keyword 輸出到ShaderVariant文件。
中間,還有很多坑,比如獲取shader keyword的接口是私有的,只能反射調用。
....
然后BD默認策略,是收集所有使用的shader和keyword,打包成一個ab,游戲啟動一次性加載~
有興趣的小伙伴可以去看源碼,這里就不贅述,
主要記住Shader打包Assetbundle的問題,方便各位小伙伴排查錯誤~
最后,祝大家天天不用加班!!!!!
總結
以上是生活随笔為你收集整理的assetbundle能不能删除_Unity3d爬坑篇(2)之Assetbundle、Shader和Keyword的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微软谈新版必应:搜索广告市场份额每增加
- 下一篇: 《流浪地球2》导演郭帆:我们在这方面弯道