天天看點

技術分享連載(九十三)

Q1:我們用的是Unity 5.5.2,下圖是紅米2上測試的加載8個特效資源,峰值是46MB,然後就下落到22.6MB,這個記憶體波動是什麼引起的,是因為Rendering Batches嗎?

技術分享連載(九十三)
技術分享連載(九十三)
按照題主提供的例子,UWA進行了測試,在Unity 5.5.2版本中的Android真機上确實複現出了這個問題。 加載4個粒子特效,紅米2裝置上,加載前記憶體:
技術分享連載(九十三)
加載時記憶體:
技術分享連載(九十三)
加載後記憶體,确實出現了Unity記憶體快速升高而又回落的“抖動”現象:
技術分享連載(九十三)
對此,我們又在Unity 5.6.2版本上進行了真機測試,同樣是紅米2: 加載前記憶體:
技術分享連載(九十三)
技術分享連載(九十三)
加載後記憶體,雖然記憶體同樣存在小幅抖動,但其抖動範圍已經明顯降低。
技術分享連載(九十三)
是以,建議研發團隊嘗試控制同一幀中Resources.Load的加載次數或者更新到更高Unity版本。

該問題來自UWA問答社群,如您對該問題仍有疑問,可以轉至社群進行進一步交流。

https://answer.uwa4d.com/question/5a40eaa2b319bedd3bec6d90

UGUI

Q2:我們使用UGUI的Input Field,在手機上面如果使用者輸入系統自帶的emoji表情,會導緻一些問題,導緻Input Field輸入框顯示異常,比如會出現一個問号的字元一直沒法删除之類的,請問有什麼辦法可以過濾掉玩家輸入的emoji表情?或者把emoji表情比對成其他的字元?我現在是用正則來比對emoji表情的unicode編碼,但這樣還是會出現覆寫不全的情況。

我們現在的處理方案,在inputfield上挂一個元件,采用類似代碼來過濾表情符号,不過還沒測試過能夠完全符号所有表情符号,雖然不能過濾到所有的表情符号,但也不會報錯。
UWA試下來在Unity 5.5.5p2上也重制了該問題。但在Unity 5.6.2上沒有這個問題。更新确實可能會帶來風險,是以建議一種方法是用正則來比對,網上一般也都用的這個方法。 第二種是建議可以試一試的,就是對比下Unity 5.5.5p2和Unity 5.6.2的UGUI的代碼改動(主要是InputField的),嘗試自己對照着修修看,然後自行編譯UnityEngine.UI.dll。

https://answer.uwa4d.com/question/5a4448e47a38eea813706571

Q3:Unity 4.x Animator 能否在編輯器下進行采樣呢?比方說一個技能動作30幀,想知道每一幀下模型各個節點的坐标旋轉縮放,該怎麼辦呢?

1)可以在Animation視窗中直接看。
技術分享連載(九十三)
2)利用API: AnimationUtility.GetAllCurves 或 (AnimationUtility.GetEditorCurve)擷取各節點的各屬性AnimationCurve,然後取各AnimationCurve.keys中各(keyframe的value)。
之前UWA Blog裡有兩篇部落格涉及到動畫采樣,GPU Skinning和動畫檔案降低精度,裡面都有涉及采樣部分的代碼,建議題主可以去看看。

該問題來自UWA問答社群,感謝招文勇提供了回答,如您對該問題仍有疑問,可以轉至社群進行進一步交流。

https://answer.uwa4d.com/question/5a44ff2c997cacca2128b1e1

Q4:不同項目的AssetBundle能夠互相讀取嗎?有什麼加密方式嗎?不同的Unity版本對AssetBundle的相容性如何?

1)AssetBundle是可以互相讀取的,隻要Unity版本是對應的。 2)加密是跟一般的檔案加密一樣,但需要通過LoadFromMemory來進行加載,具體的方法網上有很多,建議題主可以Google一下。 3)在Unity 5.x版本中,高版本的項目是支援讀取低版本的AssetBundle的,隻要AssetBundle上開啟TypeTree(預設開啟)理論上就沒問題。

https://answer.uwa4d.com/question/5a45bc64fe338d132401a799

Q5:關于加載資源的CreatefromMemory這個API,我看到UWA不推薦使用,因為其效率很低,但是我們需要做dll的更新,我們dll是用這個加載政策的,想問下有沒有什麼别的方法,大家都不用這個API嗎?或者有沒有什麼特殊情況下可以用呢?如何使得這個API的耗時降到最低?求建議,感謝!

如果這個API僅是用來熱更新代碼的,那麼使用它無可厚非,這個也确實是必要的,否則就是使用類似Lua的方式來進行代碼熱更。 UWA不推薦頻繁地使用Create/LoadFromMemory這個API是指不推薦将其頻繁地用在資源的加載上。如果是重要的配置檔案或者dll代碼,是完全可以使用這個API來進行加載的。

原文出處:侑虎科技

本文作者:admin

轉載請與作者聯系,同時請務必标明文章原始出處和原文連結及本聲明。

繼續閱讀