unity 3D之ugui Scroll Rect拖拽消息冲突问题

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

相关文章
相关标签/搜索