有關Editor的記錄(一)
//ScrollView滾動卡頓優化
為什麼要對ScrollView滾動卡頓做優化?是因為在使用 Unity 開發遊戲的時候,經常會需要用到資料配置,方式可能是CSV、JSON等等。為了可以方便地檢視修改資料,通常使用實現ScrollView在 Unity 編輯器裡面以列表的形式檢視資料。
當資料量大的時候,滾動檢視會發現卡頓不斷,測試程式碼如下:
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
|
滑鼠拖動滾動條滾動的時候,可以明顯發現滾動條卡頓延遲跟著滑鼠動:
解決
優化的思路就是隻繪製當前可視的區域,自 Unity 5.6 開始已經提供TreeView
控制元件,自帶支援大資料集, 詳見https://docs.unity3d.com/560/Documentation/ScriptReference/IMGUI.Controls.TreeView.BuildRoot.html
如果還沒使用 Unity 5.6,那麼可以參考它的實現方式。將Layout自動佈局方式改成給定矩形來繪製,這樣方便知道每行的高度和總的內容高度,再根據滾動條的座標來計算獲取當前顯示的起始行和結束行,只繪製需要顯示的行內容。
程式碼修改如下:
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
|
再次滑鼠拖動滾動條滾動的時候,可以明顯發現滾動條流暢許多:
編輯時的問題
因為不是繪製全部控制元件,那麼當使用編輯框的時候,彈出的編輯控制元件不會跟隨著滾動,如下所示:
那麼就當滾動的時候,結束當前正在編輯的項吧,修改OnDrawListView2
函式:
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
|
自動佈局
如果還是想使用自動佈局方式來繪製項的話,那麼可以使用GUILayout.Space
來佔用不需要繪製的區域。
///
相關文章
- Unity 的 Surface Shader有關記錄Unity
- 記錄一些有關資料庫操作的擴充套件包資料庫套件
- Android中記憶體優化的那些事 - 一個有關圖片的優化記錄Android記憶體優化
- Android中記憶體優化的那些事 – 一個有關圖片的優化記錄Android記憶體優化
- 有關Web 安全學習的片段記錄(不定時更新)Web
- 記錄:spring(springmvc) Editor Converter使用區別SpringMVC
- 記錄一個關於變數命名的事情變數
- 一個關於狗記錄的Java練習Java
- 關於分銷模組的一些記錄
- 關於ASMLib的一個小事,記錄一下ASM
- 有關Undo表空間與回滾段的一些查詢語句記錄
- 一個關於ace-editor編輯器的問題
- 有關AsyncTask的一些隨筆筆記筆記
- 關於資料檔案autoextend on的一點記錄
- 記錄一下使用左關聯的一次查詢(可樂的筆記)筆記
- 關於Laravel中的Redis如何使用Lua的一點記錄LaravelRedis
- 關於vue-baidu-map的一些記錄VueAI
- Laravel 記錄相關Laravel
- 關於javascript原型鏈的記錄JavaScript原型
- MySQL 關聯表取最新一條記錄方案MySql
- 關於使用雲伺服器遇到的問題記錄(一)伺服器
- Windows 記錄一次磁碟相關的PC卡頓問題Windows
- 記錄一些很酷的套路,有時間再展開寫
- linux相關記錄Linux
- 有關golang通道的面試筆記Golang面試筆記
- 有關記憶體的思考題記憶體
- 更新一張與另一張表關聯的連線欄位記錄
- 筆記:editor.md 常用 api筆記API
- 【OpenCV】有關記憶體釋放的一些問題OpenCV記憶體
- 設一ALERT,抓取SHIPPED後在ITEM DEMAND SUPPLY中還有記錄的
- 關聯物件(防止自己忘記記錄)物件
- 記一次關於 timestamp 無法檢索時分秒的排坑記錄
- 關於webpack問答記錄...Web
- QT/c++相關記錄QTC++
- git相關操作,個人記錄Git
- 關於SQL的重複記錄問題SQL
- 有關認識論、世界觀的一份筆記 + 小廣告筆記
- 記錄一次測開面試題記錄面試題