如題。
ugui的誕生很大程度的改變了NGUI一手遮天的現狀。但是Ugui也由於與Ngui有極大的相似之處被人認為是Ngui的私生子。Ugui是unity親生的UI系統,在各個地方都有照顧,所以也被越來越多的人認識。越來越多的游戲、應用也逐漸采用ugui去開發。但ugui始終沒有Ngui的渾厚,很多功能也亟待改善。
1、Ugui界面開發之Scroll Rect
拖拽是游戲中需要顯示較多物體的主要方式,表現在界面上就需要用到諸如Scroll Rect等方式。
2、創建一個Scroll Rect
Unity 5.2版本中創建Scroll Rect與老一點的版本不同,在結構樹中分為四層:“Scroll Rect/ViewPoint/Content/item”。如下圖。
首先在觀察窗口中創建一個Panel
在Panel中添加Scroll Rect組件。
點擊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