1)Addressables資源如何進行完整性校驗
2)使用SpriteAtlas時出現冗餘精靈,如何指定用哪一個圖集
3)anim文件進行精度處理後某些信息丟失
這是第365篇UWA技術知識分享的推送,精選了UWA社區的熱門話題,涵蓋了UWA問答、社區帖子等技術知識點,助力大家更全面地掌握和學習。
UWA社區主頁:community.uwa4d.com
UWA QQ羣:465082844
Addressable
Q:遊戲是在啓動的時候檢測資源更新並下載,當下載到一半的時候直接退出遊戲。再啓動遊戲的時候Addressables無法檢測到要更新的資源。
我查看了下載寫入資源的文件夾,發現Catalog文件已經完全寫入了,估計是這個原因,導致Addressables無法檢測到更新的資源。
請問,像這種下載到一半,希望Addressables能接着上次的進度繼續下載的要怎麼處理呢?
還有一點,不知道Addressables有沒有提供資源完整性校驗的方法。
我希望能在資源全部下載完成後,再檢測一遍資源文件是否完整(完全下載完成以及文件是否有損壞)。並把這個檢測的功能放到UI上,這樣在一些不可預測的環境下,不至於卡死且無法解決問題。
A:第一個問題已經解決,Addressables自動會校驗。先前我們的調用方法有問題,再加上有魔改過裏面的東西導致的。
感謝題主jim@UWA問答社區提供了回答
SpriteAtlas
Q:當前2D項目中有很多場景,以下按A、B、C代替。
由於前期沒有做好圖片分包策略,場景之間對精靈圖的引用很複雜,很多圖在多個場景中都有用到。
目前採取了一個暴力的做法,對單個場景裏引用的所有圖片生成圖集,即A場景對應A圖集,B場景對應B圖集。
這樣雖然在圖集之間有精靈冗餘,但是總體包量並沒有大太多。
想法是加載A場景時用A圖集就夠了,但在實際測試時
SpriteAtlasManager.atlasRequested(string tag, Action<SpriteAtlas> callback) {}
所給的Tag值可能是B圖集或D圖集,如果都加載的話,內存量上去了,DrawCall也降不下來。
要解決這個問題,我有幾個想法:
1. 忽略Tag,A場景直接返回A圖集,但如果要同時加載另外的圖集就會出問題,不好。
2. 如果能找到圖集內部綁定邏輯,在打包時對配置文件進行修改,就能控制Tag值了。
3. 整理資源完全去除冗餘,有可能需要做可視化編輯器(如果有現成的就太好了),想想就頭大。
求教一下各位大神,應該如何處理?
針對以上問題,有經驗的朋友歡迎轉至社區交流分享:
https://answer.uwa4d.com/question/6552e8b340a8d93b624afb93
Animation
Q:導入anim後綴的文件進行精度處理後某些信息就丟失了,如下圖:
修改的代碼:
AnimationClip theAnimation = AssetDatabase.LoadAssetAtPath<AnimationClip> (path);
Keyframe key;
Keyframe[] keyFrames;
foreach (EditorCurveBinding binding in (AnimationUtility.GetCurveBindings(theAnimation)))
{
AnimationCurve curve = AnimationUtility.GetEditorCurve(theAnimation, binding);
if (curve == null || curve.keys == null)
{
continue;
}
keyFrames = curve.keys;
for (int i = 0; i < keyFrames.Length; i++)
{
key = keyFrames[i];
key.value = float.Parse(key.value.ToString("f3"));
key.inTangent = float.Parse(key.inTangent.ToString("f3"));
key.outTangent = float.Parse(key.outTangent.ToString("f3"));
keyFrames[i] = key;
}
curve.keys = keyFrames;
theAnimation.SetCurve(binding.path, binding.type, binding.propertyName, curve);
修改前:
CelHeroRoleProp_enter.anim
修改後:
CelHeroRoleProp_enter.anim
A:丟失的信息是mEditorcurves,該字段只對anim在Editor中的內存佔用產生影響,對其在真機運行時的動畫效果與內存佔用並無影響。因此該字段列表為空與否不會影響其在真機中的表現,可以用提問中的方式對其進行精度處理。如果想保留該字段(雖然對真機內存無影響),可以通過文本處理的方法對anim文件進行精度處理,處理時跳過mEdtorcurves字段。
感謝uwa_Ren@UWA問答社區提供了回答
封面圖來源於網絡
今天的分享就到這裏。生有涯而知無涯,在漫漫的開發週期中,我們遇到的問題只是冰山一角,UWA社區願伴你同行,一起探索分享。歡迎更多的開發者加入UWA社區。
UWA官網:www.uwa4d.com
UWA社區:community.uwa4d.com
UWA學堂:edu.uwa4d.com
官方技術QQ羣:465082844