如題。html
ugui的誕生很大程度的改變了NGUI一手遮天的現狀。可是Ugui也因爲與Ngui有極大的類似之處被人認爲是Ngui的私生子。Ugui是unity親生的UI系統,在各個地方都有照顧,因此也被愈來愈多的人認識。愈來愈多的遊戲、應用也逐漸採用ugui去開發。但ugui始終沒有Ngui的渾厚,不少功能也亟待改善。函數
一、Ugui界面開發之Scroll Rectui
拖拽是遊戲中須要顯示較多物體的主要方式,表如今界面上就須要用到諸如Scroll Rect等方式。spa
二、建立一個Scroll Rect代理
Unity 5.2版本中建立Scroll Rect與老一點的版本不一樣,在結構樹中分爲四層:「Scroll Rect/ViewPoint/Content/item」。以下圖。code
首先在觀察窗口中建立一個Panelhtm
在Panel中添加Scroll Rect組件。blog
點擊Panel,點擊鼠標右鍵-》Creat Empty。建立一個空的物體在planel下,並命名爲「ViewPoint」。繼承
點擊上一步建立的空物體,點擊鼠標右鍵-》Creat Empty,在空物體下再建立一個空物體,並命名爲「Content」:遊戲
在Content物體中添加組件「Grid Layout Group」。該組件可以自動排列子item的順序。固然根據須要你能夠選擇「 horizontal Layout」或是「vertical Layout」。
在Content下添加item。
這就作好了最簡單的Scroll Rect。
接下來根據具體問題我會提出具體的解決方案。太晚了,先睡明天更新。
更新:20160703
一般咱們在對ugui item添加點擊事件是一般會使用兩種方法
方法一:
EventTrigger事件方法,經過傳遞點擊後的回調函數,觸發點擊事件。
方法二:
經過偵聽Button 的onClick 事件。
UnityEngine.UI.Button button;
button.onClick.AddListener(function);
由於當咱們要對Content中的item作點擊事件的時候,一般會將item設定爲ugui 中的Button。因此這裏就有了方案二。
ugui Button組件中原生封裝了又onClick觸發事件。
咱們在 使用EventTrigger觸發事件時,有一個很好的地方就是隻要是GameObject,就可以響應事件。這樣的好處就是如Image等組件在Unity中也可以天然響應事件。
可是問題也就出在這裏。Scroll Rect中滑動事件是經過EventTrigger響應,因此當item也是經過EventTrigger響應點擊事件時,就會遮擋住後面的Scroll Rect的滑動事件。這會致使很尷尬的結果,滑動列表須要在很小的範圍纔會響應滑動事件。
因此在處理這個問題的時候我選用了第二種方案,使用onClick去觸發點擊事件。onClick回調函數 是繼承自UnityEngine.Events.UnityAction.委託。因爲同一個點擊事件經過不一樣的事件模塊去響應,很好的處理了item擋住Scroll Rect 事件的問題。委託格式爲不帶任何參數和返回的函數。
當咱們要使用的時候經過調用button.onClick.AddListener(function);便可。
例如:button.onClick.AddListener(OnButtonClick2);
可是這樣的話每次不能傳值只能觸發事件,爲了在響應的同時經過事件出入參數,因此在事件處理時添加了代理函數。
button.onClick.AddListener(delegate(){OnButtonClick1(button.gameObject);});這樣就能響應時間的同時傳入參數。
///鼠標點擊回調事件 public void OnButtonClick1(GameObject go){ //do some thing }
public void OnButtonClick2(){
//do some thing
}
reference:
http://www.xuanyusong.com/archives/3325
THISSKY出品,原文連接:http://www.cnblogs.com/zhuhongjongy/p/5441069.html