1. 程式人生 > >unity3D遊戲開發十七之NGUI四

unity3D遊戲開發十七之NGUI四

接下來我們講解下UIGrid,UIGrid是用來輕鬆的排列眾多widget到固定大小格子的指令碼。 編輯時和執行時都可以使用。如果想使用可變的格子單元大小,你可以使用UITable,屬性如下圖:


Arrangement的值決定了子節點的擺放位置。Horizonta讓子節點向右排列,Vertical向下排列。
Max Per Line屬性控制Horizontal排列時候的最大有多少列, Vertical排列的時候最大有多少行。
Cell WidthHeight決定了所有條目的間隔。
預設情況下Grid重新調整所有的子節點的位置,子節點的排序是以建立時候的順序為準。如果想要指定排列順序,就把子節點的名字用字母排序的方式命名 (“001”, “002”,“003”等),之後勾選

Sorted。這樣做就會讓Grid在重新排列之前先按名字進行排序。 
最後,如果你想給看不到的子節點留下位置,勾選掉Hide Inactive。預設是勾選上的,所有看不到的子節點在排列時會被忽略。

我們在gird下新建4個button,然後設定排序方式,效果如下圖:


接下來我們瞭解下UIScrollview,滾動檢視,屬性如下:


Movement:移動方向

Drag Effect:內容拖動時候顯示的效果

Scroll Wheel Factor:使用滑鼠進行滾動時,滾動時候的比例

Momentum Amount:快速滑動時產生的衝力

Restrict Within Panel:在面板裡進行約束

Cancel Drag if Fits:如果有元件適應了面板的大小,取消元件在面板裡的拖動

Smooth Drag Start:平滑拖動

IOS Drag Emulation:在蘋果上模擬滑動效果

Scroll Bars:在進行拖動時,可以加入一個Scroll Bars來控制或者顯示進度

下面我們具體來做一個scrolview,我用的NGUI版本是3.5.4,我們先看下最後的效果,如下圖:


先建立一個2D UI,再建立一個scrollview,在scrollview下建立一個UIGird,在gird下建立一個空物件,空物件下再建立一些label,sprite等,整個結構如下圖:


注意每個item都需要新增NGUI->Attach->Collider,碰撞體,還要新增NGUI->Interaction->Drag Scroll View,

我們接下來看下UITable,UITable 是一個輔助指令碼,讓你容易將widgets排放到不同大小的格子中。假如你熟悉HTML的tables,兩者是十分類似的。它可以在編輯階段以及執行階段來使用。假如你像要固定大小的格子,可以考慮使用更有效率的UIGrid作為代替。屬性如下圖:


要使用UITable,首先選擇一個panel,在scene view的任何地方點選右鍵,然後在Create menu中選擇Table 。你也可以簡單的將UITable 元件附加到任何一個空遊戲物件上,以達到相同效果。

table 總是會先向右延伸,Columns 屬性的值控制在table中多少行後會開始新的一列。新的一列可以往上或往下,取決於Direction屬性

預設情況下,Table 會重新定位所有的子物件,而排列的順序是物件被建立的順序。假如你想要改變這點,並且以特定的順序排列,你可以按字母排序的重新命名(("001", "002", "003", 等等),並且選取Sorted屬性。這樣做可以讓table調整位置前先排序子物件的順序。

最後,假如你想要保留看不見的子物件留下來的空格,將Hide Inactive關閉。預設情況下這個選項是開啟的,所以不可見的物件是直接被忽略的。

你可以藉由修改Padding屬性來增加格子間的間隔。

注意每個子物件定位點(pivot point)的問題。假如所有table的子物件都是 center-based的定位點,它們會在table的中間出現。假如子物件的定位點是top-left,它們會在table格中的左上角出現,以此類推。最好是讓格子中的物件都有相同的定位點。

效果如下圖: