1. 程式人生 > 其它 >ToLua或XLua中的虛擬機器是否獨立於Unity的主執行緒

ToLua或XLua中的虛擬機器是否獨立於Unity的主執行緒

1)ToLua或XLua中的虛擬機器是否獨立於Unity的主執行緒
​2)Timeline技能編輯器提取關鍵幀資訊
3)Canvas AdditionalShaderChannels設定無效
4)SDK返回的時候取Time.deltaTime比較大


這是第291篇UWA技術知識分享的推送。今天我們繼續為大家精選了若干和開發、優化相關的問題,建議閱讀時間10分鐘,認真讀完必有收穫。

UWA 問答社群:answer.uwa4d.com
UWA QQ群2:793972859(原群已滿員)

Lua

Q:ToLua或XLua中的虛擬機器是否獨立於Unity的主執行緒?

A:Lua的虛擬機器有自己的堆、棧記憶體,虛擬機器的更新需要有外部的執行緒通過函式呼叫來驅動,而Lua虛擬機器目前只支援單個執行緒來驅動。在實際專案中,因為Lua中要訪問Unity的API,所以基本上都是通過主執行緒來驅動。

但實際上,如果不需要訪問Unity API,完全是可以放在子執行緒裡去驅動的。

該回答由UWA提供


Timeline

Q:最近在用Unity做一個技能編輯器,讓策劃可以在Timeline編輯器裡編輯技能動畫、施法特效、受擊動畫、受擊特效和播放聲音等等。編輯這些都沒什麼問題,我想根據編輯好的Timeline匯出一系列行為節點,在Editor的環境下匯出成配置(包含所有行為節點)。現在我不清楚怎麼獲取Timeline裡第m幀開始某動畫x,第n幀結束這些行為。同時怎麼能給動畫打上對應Tag?

A1:Timeline的組成如下圖:

 

每個Track對應一個TrackAsset其實就是一個PlayableAsset,整個Timeline也是一個TimelineAsset,裡面存了所有Track的資料。

 

對於每個Clip的開始和結束時間在TimelineClip中可以獲取。

  

 

感謝羽飛@UWA問答社群提供了回答

A2:我把基於Timeline的編輯器小Demo共享上來。

 

技能編輯器Demo

以上是本人摸索著寫的一個簡單技能編輯器Demo,基於Timeline的。

感謝題主右前鋒@UWA問答社群提供了回答


UGUI

Q:在UI中使用到的Shader中用到了UV1和UV2通道,在Canvas AdditionalShaderChannels中選擇添加了對應通道後沒有效果,相同程式碼資源在2019.4.26f1c1正確顯示,請教大家是否是版本問題還是需要特殊設定處理?

Unity版本:2018.4.17f1

 

 

Unity版本:2019.4.26f1c1

 

 

A:搜尋了一下Unity Release Note,在Unity 2019.2.0版本中發現Unity修復了這個問題。修復後,AddVert會把UV2的資料和UV3的資料也拷貝進去。沒修復前,UV2的資料從RenderDoc裡面看是0。

  

 

測試了一下,確實在2019.1.14版本還是有問題的,下一個版本2019.2.0就沒問題了。

在2018.4.23f1版本上參考這個連結的Outline效果進行了測試,在小米9真機上沒有發現問題,題主可以參考一下:
https://www.1024sou.com/article/2307.html

PS:看了2018.4.18到2018.4.23之間的所有的Release Note,沒有發現相關問題的修復。這個文章是使用Shader來實現Outline的,感覺效果挺不錯。

感謝Xuan@UWA問答社群提供了回答


Script

Q:nity呼叫某SDK進行登入,SDK返回的時候取Time.deltaTime比較大(就是從呼叫SDK開始到SDK返回的時間),這種情況可能導致我在Update裡的邏輯經歷了很長的一幀。

A1:直接點就是判斷Time.deltaTime大於某個閾值時直接Return。

感謝碎心客@UWA問答社群提供了回答

A2:Time.deltaTime比較大也就是說登入操作的耗時很高,而且是一個同步呼叫,確實會導致卡頓問題(在Update裡的邏輯經歷了很長的一幀)。

一般來說,網路請求等操作應該儘可能通過非同步呼叫來實現,如果是SDK的登入介面沒有提供非同步方法,建議先嚐試通過子執行緒(new Thread)來呼叫,然後主執行緒上開個協程每幀輪詢下結果。

該回答由UWA提供

封面圖來源於網路


今天的分享就到這裡。當然,生有涯而知無涯。在漫漫的開發週期中,您看到的這些問題也許都只是冰山一角,我們早已在UWA問答網站上準備了更多的技術話題等你一起來探索和分享。歡迎熱愛進步的你加入,也許你的方法恰能解別人的燃眉之急;而他山之“石”,也能攻你之“玉”。

官網:www.uwa4d.com
官方技術部落格:blog.uwa4d.com
官方問答社群:answer.uwa4d.com
UWA學堂:edu.uwa4d.com
官方技術QQ群:793972859(原群已滿員)