ScrollView控件屬於一種通用組件,而在UGUI中目前還沒有這種組件,因此需要我們自己來做。過程當中會遇到較多的坑,需要自己寫一些腳本來進行控制。這裏介紹一下製作流程,避免重複踩坑。
下面以好友列表爲例進行介紹:
- Hierarchy結構
如下,UIScrollViewFriend是ScrollView的RootUI,UIScrollView用於佈局Items,方便動態添加和刪除Items並正確佈局他們,並界定UIScrollViewFriend的顯示區域。
- 每個組件掛機的腳本:
UIScrollViewFriend
- Anchor對齊方式選擇不一,這個根據需求自己決定;
- ScrollRect用於確定ScrollView中顯示的內容:Content域用於設置內部顯示的內容,因此這裏選擇的是下層的UIScrollView,Horizontal和Vertical是選擇拖動的方向支持,Horizontal Scrollbar和Vertical Scrollbar可以和ScrollBar結合使用;
- Canvas Renderer和Image和Mask共同構成遮罩,用於設置內容可見區域;
- UIScrollViewSelector用於點擊事件處理。加上這個腳本的原因是,如果在Item上每個Item都加上Event Trigger響應事件,則ScrollView的拖動事件就無法響應,因爲Item截取了輸入信息。因此我們的做法是由ScrollView統一負責事件處理,然後分發給不同的Item,因此每個Item上需要掛接一個腳本與此對應,這個後面介紹。
-
Event Trigger用於獲取事件進行處理,需要響應Drag事件和Pointer Up事件,然後響應函數是UIScrollViewSelector的OnDrag和OnPointerUp函數。
ScrollView
-
Grid Layout Group用於自動佈局每個Item的位置,需要設置好每個Item的寬度和高度以及對齊方式等;
-
UIScrollViewFriend用於添加下面Item,這個類繼承自UIMFScrollView,AddChild後需要調用UIMFScrollView的RefreshSize方法改變自身大小和所有的孩子的總大小相同。
ScrollItem
UIFriendItem繼承自IScrollViewSelect,需要實現Select函數,然後Start的時候需要將自己註冊到上層的UIScrollViewSelector中,以正確處理點擊事件。
因此總結下來需要自己實現兩個腳本:
- 一個需要繼承自UIMFScrollView,用於在添加Item時動態改變ScrollView的大小;
- 一個需要繼承子IScrollViewSelector,用於處理點擊選擇事件,在其中進行點擊事件的處理。