天天看點

Unity 編輯器ScrollView滾動卡頓優化

在使用 unity 開發遊戲的時候,經常會需要用到資料配置,方式可能是csv、json等等。為了可以友善地檢視修改資料,通常使用<code>scrollview</code>實作在 unity 編輯器裡面以清單的形式檢視資料。

當資料量大的時候,滾動視圖會發現卡頓不斷,測試代碼如下:

滑鼠拖動滾動條滾動的時候,可以明顯發現滾動條卡頓延遲跟着滑鼠動:

Unity 編輯器ScrollView滾動卡頓優化

優化的思路就是隻繪制目前可視的區域,自 unity 5.6 開始已經提供<code>treeview</code>控件,自帶支援大資料集,

詳見https://docs.unity3d.com/560/documentation/scriptreference/imgui.controls.treeview.buildroot.html

如果還沒使用 unity 5.6,那麼可以參考它的實作方式。将layout自動布局方式改成給定矩形來繪制,這樣友善知道每行的高度和總的内容高度,再根據滾動條的坐标來計算擷取目前顯示的起始行和結束行,隻繪制需要顯示的行内容。

代碼修改如下:

再次滑鼠拖動滾動條滾動的時候,可以明顯發現滾動條流暢許多:

Unity 編輯器ScrollView滾動卡頓優化

因為不是繪制全部控件,那麼當使用編輯框的時候,彈出的編輯控件不會跟随着滾動,如下所示:

Unity 編輯器ScrollView滾動卡頓優化

那麼就當滾動的時候,結束目前正在編輯的項吧,修改<code>ondrawlistview2</code>函數:

如果還是想使用自動布局方式來繪制項的話,那麼可以使用<code>guilayout.space</code>來占用不需要繪制的區域。

繼續閱讀