1)AssetBundle如何計算可靠的Hash值
2)升級後的物理開銷問題
3)UWA GOT支持iOS後沒法出包問題
4)如何釋放Live2D new的Mesh
5)霧效Fog在手機上失效的問題html
Q:項目以前是使用建置出來的AssetBundle檔案,本身算MD5看成用戶端更新比對項目。但由於AssetBundle建置的不穩定性,經常Asset沒有改變可是AssetBundle變了,致使用戶端下載到沒必要要的AssetBundle。因此後來開始試着從Asset算一個Version Hash值。目前引入的參數有:xcode
可是這個方案實際應用仍是有不少問題:框架
感受本身Version Hash好像也沒有徹底解決問題又形成建置時間增長,因此想問在運營大項目的大佬們有什麼建議,謝謝。工具
A1:我的仍是投票給構建完畢以後的AssetBundle的Hash值。一方面擔憂本身構建的不能覆蓋全部更改的狀況(題主考慮的已經挺全面),另一方面是.meta文件自己就不是爲構建惟一性設計的,好比它混合了各個平臺的參數,任何一個平臺的參數修改都會致使其內容的更改,所以咱們必須參考meta,而它的修改又不必定意味着資源的修改,這樣就很尷尬。測試
在這個前提下,能夠作的事情是儘可能發現和解決資源相同可是AssetBundle的文件Hash值卻不一樣的狀況。
感謝賈偉昊@UWA問答社區提供了回答網站A2:咱們是這樣作的:
AssetBundleHash結合AssetFileHash,在Bundle對應的manifest文件中能夠取到AssetFileHash值。ui
ManifestFileVersion: 0 CRC: 3889896754 Hashes: AssetFileHash: serializedVersion: 2 Hash: 7a90127ef724ff63cb40874dc69929b8 TypeTreeHash: serializedVersion: 2 Hash: 0d46a8251e1e96cd839078edaf4c28a3
對於AssetBundleHash不一樣但AssetFileHash相同的,按未變化處理。
感謝littlesome@UWA問答社區提供了回答
Q:一個項目場景裏只有靜態碰撞盒, 用於玩家點擊選中。Unity 5.6以前,物理開銷基本沒有。 升級到Unity 2018後,分析報告裏的物理開銷2ms不到,雖然很少,可是很奇怪。spa
後來發現Project Settings裏把Physics.autoSimulation關了以後開銷就下去不少了, Physics2D.autoSimulation關了以後會再下去了一點點。這個參數好像是Unity 2017以後新加的參數。插件
看介紹,關了這個參數以後每次LateUpdate的時間裏就不會自動處理物理方面的計算, 能夠手動調用Physics.Simulate來手動控制物理計算。設計
A:物理系統不會本身去運行了。在5.4~2017.2版本中,Unity引擎能夠根據大家項目中Rigidbody的使用狀況來本身決定是否開啓物理引擎,若是沒有使用,則它會自動關閉。可是,在2017.4版本之後,物理引擎會自動開啓,Unity引擎推出API由開發團隊本身去控制是否開啓和關閉。因此,通常在最新的版本中,UWA都建議你們看看大家的物理模塊開銷,是否在自動空轉,若是耗時較高,則能夠嘗試本身去關閉Auto Simulation選項。可是,須要說明的是,若是場景中含有Trigger、布料模擬等,則關閉Auto Simulation後則不起做用了,這個時候研發團隊須要根據自身狀況來決定該選項的開啓和關閉。
該回答由UWA提供
Q:最近有看到UWA GOT工具新增了iOS版本的支持,因而下載了最新的工具包進行了接入測試。是按照文檔直接將UWA_GOTv2.0.1_iOS.unitypackage導入進了Unity項目內,而且作了配置。
可是發現添加了UWA GOT插件之後iOS上不能正常出包,老是卡在xcodebuild archive這一步,報錯信息以下:
** ARCHIVE FAILED ** The following build commands failed: Check dependencies
咱們打的是Distribution包,是否跟這個有關係?已經確認就是添加了UWA_GOT插件之後引發沒法打包的問題,由於在移除了SDK之後能夠順利出包了,麻煩各位前輩幫忙解答下。
(版本:Unity 2018.3.4f1)
A:目前已經解決,是被上面的報錯信息混淆了視聽。以前由於打包環境比較複雜,有的時候不能獲得真正的報錯位置,並且同時還要不停地有出包任務,很差作調試。因此今天單獨在一臺純淨的Mac上面模擬了打包環境,並接入UWA GOT的iOS版SDK,測試了之後有如下發現:
一、導出xcode工程而且在xcode中直接build不會報錯。
二、導出xode工程,而後在xcode中執行Build Archive會報錯。報錯信息相似於下面這樣:
ld: bitcode bundle could not be generated because '/xx/libuwa.a' was built without full bitcode. All object files and libraries for bitcode must be generated from Xcode Archive or Install build for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
這樣就比較好解決了,緣由是若是一個工程裏面有靜態庫的引用,那麼全部的靜態庫也須要打開Bitcode後從新編譯。這一切在直接Build的時候都沒有問題,可是在「Archive」的時候就會報錯。咱們在出iOS包的流程是先Build Archive而後在export Archive導出ipa,所以就會出現問題了。
解決方法比較簡單,我是直接在執行xcodebuild命令的時候把EnableBitcode設置爲NO了,相似於下面的命令:
xcodebuild -target <your target> -configuration <your configuration> **ENABLE_BITCODE=NO**
看網上還有一種解決辦法是不關閉bitcode,而後在執行xcode build命令的時候帶上參數。
OTHER_CFLAGS="-fembed-bitcode"
後面這種沒有試過不知是否奏效,但願能夠幫助到你們。
感謝題主馬三小夥兒@UWA問答社區提供了回答
Q:項目用的Live2D,建立後其框架會動態new大量Mesh,想求教下除了用Resources.UnloadUnusedAssets()接口外,有沒有方法能指定只釋放這部分Mesh?
A:Live2D有兩個大坑:
(1)CubismRenderer初始化new Mesh[2],並無銷燬代碼
代碼修改以下:
(2)MeshRenderer.material實例化獨立材質
代碼修改以下,運行時還須要把全部MeshRender的材質設置成同一個材質:
感謝晨星@UWA問答社區提供了回答
Q:在PC上面,整個場景中有霧效,單獨對這個場景打包AssetBundle,那麼在手機上面沒有霧效。若是是直接將該場景丟在Hierarchy上build,在手機上面能夠看見霧效。請教下,這個是哪裏出了問題?都是在一樣的手機上面測試的。
A:多是graphics裏的霧選項沒勾Shader裁剪了。
感謝關@UWA問答社區提供了回答
今天的分享就到這裏。固然,生有涯而知無涯。在漫漫的開發週期中,您看到的這些問題也許都只是冰山一角,咱們早已在UWA問答網站上準備了更多的技術話題等你一塊兒來探索和分享。歡迎熱愛進步的你加入,也許你的方法恰能解別人的燃眉之急;而他山之「石」,也能攻你之「玉」。
官網:www.uwa4d.com
官方技術博客:blog.uwa4d.com
官方問答社區:answer.uwa4d.com
UWA學堂:edu.uwa4d.com 官方技術QQ羣:793972859(原羣已滿員)