three.js項目引入vue,因代碼編寫不當導致的嚴重影響性能的問題,卡頓掉幀嚴重
問題排查
使用谷歌瀏覽器的Performance分析頁面性能
可以看到vue.js的reactiveGetter方法耗時最長,剛開始看到這個覺得很奇怪,三維卡頓跟vue怎么會有關系呢?
vue.js的reactiveGetter方法調用了很多三維模型的方法,我引入vue是為了方便做增刪改查,它不應該頻繁調用three.js的方法,所以這是不正常的
問題原因
我把火焰模型對象、事件位置精靈標簽對象、路線展示相關的數據放到了vue對象的data中,導致vue頻繁監控三維模型相關的大量變量及屬性,使性能嚴重下降
問題解決
把fire、planLocation、modelData這三個三維相關的數據,放到vue對象的外面
然后問題完美解決,展示了火焰效果和逃生路線后,頻率依然是60FPS,沒有受到影響,碰撞檢測開啟后也很流暢,在場景中飛行也很流暢