由於項目需要,需要用NGUi實現一個圖片瀏覽切換的功能,於是參考官方NGUI例子的ScrollView做了一個例子,初始看上去基本實現了自己想要的功能。
但是測試后發現當隱藏其中一張圖片后,后面圖片不能自動跟上排列,於是折騰半天終於發現可以通過設置腳本的一個方法重置位置。
解決:UIGrid grid = (UIGrid)transform.GetComponent("UIGrid");
grid.Reposition();
此時可以讓位置重新排列,隱藏其中一張都沒問題了。
但是,接着測試又發現當第一張圖片和最后一張圖片隱藏時,圖片到最前最后一張拖動時,都會直接沒了,不會碰到邊界彈回來。這個問題折騰了一天,各種暈!
今天耐心把腳本的一個個參數設置過去,終於搞定了!
解決:在UIPanel腳本里面Clipping這項設置成softClip,並把size設置你圖片的大小,后面softness設置成圖片的一半(這個參數大家可以隨意調下,有不同效果)
還有在UIDraggablePanel腳本里面把Drag Effect 設置成None。
實現步驟:
1.創建一個NGUI 2D UI
2.重命名Anchor為Anchor-Center。添加UIDraggablePanel、SpringPanel腳本到ScrollPanel上
3.創建一個游戲空對象,重名名WindowRoot,移動到Anchor-Center下 ,並記得reset下
4.在WindowRoot下創建一個NGUI的panel,重名名為Panel-Clip
5.再創建一個游戲空對象,重命名UIGrid,並reset下
6.在UIGrid,再創建一個游戲空對象命名為hxt_C2_F1,reset下
7.在hxt_C2_F1,添加一個NGUI的texture,作為設置圖片的控件,然后復制3個,修改名字,如圖
8.為UIGrid添加,Component->NGUI->Interaction->Grid和Component-> NGUI -> Interaction -> CenterOnChild
9.接着為UIGrid的四個子對象,添加GUI->Attach a collider和Component->NGUI->Interaction->Drag Panel Contents
10.接着為Panel-Clip添加Component->NGUI-> Interatcion->Draggable Panel
11.接着調整我上面講到的問題,設置相應腳本參數,還有圖片正常大小。
12.在UIGrid下綁定如下腳本內容:
void Start()
{
UIGrid grid = (UIGrid)transform.GetComponent("UIGrid");
grid.Reposition();
}
13.OK,幾乎不用寫代碼一個切換瀏覽圖片的功能就完成了!

感慨下,不懂腳本參數干嗎用的孩子,學習unity3d傷不起!
