如题。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