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格中的左上角出現,以此類推。最好是讓格子中的物件都有相同的定位點。

效果如下圖:

發佈了98 篇原創文章 · 獲贊 15 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章