UIButton vs UIEventListener

在使用NGUI的事件处理时,发现UIButton和UIEventListener之间的共同点越来越多。

当然处理事件,也有一些其它的函数,比如:UIEventTrigger,ButtonMessage 等等,但我用的最多的就是UIButton和UIEventListener

我们知道,只要一个GameObject上添加了Collider(BoxCollider)并且它放在UICamera所渲染的Layer下,

那么当你在脚本中写OnClick()函数时,当我们单击这个Collider时,就会触发这个OnClick()函数。

using UnityEngine;
using System.Collections;

public class ClickTest : MonoBehaviour
{
    void OnClick()
    {
        CBase.Log("click");
    }
}

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

(图) 调用堆栈

因此,我们要使用UIEventListener 来响应UI事件,我们需要做两件事

1)给UI控件添加BoxCollider,同时添加UIEventListener脚本

2) 调用委托的方法

方法一:UIEventListener.Get(gameObject).onClick += MyClickFunction;

方法二:  StartBtn.GetComponent<UIEventListener>().onClick = OnButtonClick;

UIEventlistener

UIEventlistener的源文件放在Scripts/Internal/下,可以这个脚本的重要性

打开这个脚本,可以看到里面写了很多的委托。

用法一:UIEventListener.Get(gameObject).onClick += MyClickFunction;

其实就是在执行OnClick() 方法,而OnClick()是VoidDelegate(Gameobject go)

用法二:  StartBtn.GetComponent<UIEventListener>().onClick = OnButtonClick;  void OnButtonClick(GameObject obj)

UIButton

基本上来说如果只是处理事件,可以用UIEventListener代替UIButton

UIButton中的这个功能 和以前2.X版本中的ImageButton功能非常相似

另附这篇文章写的很不错:使用UIEventListener响应NGUI事件

UIButton vs UIEventListener

时间: 2024-10-07 06:13:26

UIButton vs UIEventListener的相关文章

Button的UIEventListener

NGUI制作需要的按钮,并添加盒子碰撞器,以及UIEvent Listener脚本,(如有需要可添加UIButton脚本,用于控制按钮状态颜色等): 新建一个脚本用于监听所有按钮的点击事件 BtnEL.cs    此处以三个按钮为例 1 void Awake() 2 { 3 //查找到按钮 [此处注意查找按钮的绝对路径必须写对 4 GameObject BtnOne =GameObject . Find ( "UI Root/Camera/Anchor/Panel/BtnOne" );

自定义UIButton

#import <UIKit/UIKit.h> #import "UIView+SDExtension.h" @interface CookButton : UIButton @end #import "CookButton.h" @implementation CookButton - (instancetype)initWithFrame:(CGRect)frame { if (self = [super initWithFrame:frame])

UIButton样式设置

btn.frame = CGRectMake(x, y, width, height); [btn setTitle: @”search” forState: UIControlStateNormal]; //设置按钮上的自体的大小 //[btn setFont: [UIFont systemFontSize: 14.0]];    //这种可以用来设置字体的大小,但是可能会在将来的SDK版本中去除改方法 //应该使用 btn.titleLabel.font = [UIFont systemFo

UIKit框架之UIButton详解

UIKit框架是iPhone应用程序开发中最基本的框架,也是用得最多.最重要的框架,今天要和大家分享的就是UIKit中的UIButton相关知识,一起来看看吧. 1.实例化: 1.1.init方式: 1 UIButton *button = [[UIButton alloc] initWithFrame:rect]; 1.2.类方法方式: 1 UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 其中按钮类型枚

IOS 自定义UIBUTTON 直接拖个xib 就能在button上显示多行文本 并且添加了点击的效果

拖个button继承一下  几行代码 就搞定 自用效果还行 IOS 自定义UIBUTTON 直接拖个xib 就能在button上显示多行文本 并且添加了点击的效果,布布扣,bubuko.com

iOS 中UIButton的 settitle 和 titlelabel的使用误区

UIButton中设置Titl方法包括以下几种: - (void)setTitle:(NSString *)title forState:(UIControlState)state; - (void)setAttributedTitle:(NSAttributedString *)title forState:(UIControlState)state @property(nonatomic,readonly,retain) NSString *currentTitle; @property(n

iOS 强大的泛型,同样也可以对UIButton进行扩展

文章围绕这五点: 1. 泛型是什么 2. 为什么要用泛型 3. 泛型怎么用 4. 泛型进阶 5. 泛型的延伸使用 泛型(Generics)是什么? 引用Apple中Generics的描述: Generic code enables you to write flexible, reusable functions and types that can work with any type, subject to requirements that you define. You can writ

UIButton的imageEdgeInsets 和 titleEdgeInsets

我们知道,在UIButton中有一个UILabel和一个UIImageView,同时还有属性: titleEdgeInsets,imageEdgeInsets.介绍下 imageEdgeInsets 和 titleEdgeInsets 的用法. UIEdgeInsets 首先,titleEdgeInsets 和 imageEdgeInsets 都是 UIEdgeInsets类型.UIEdgeInsets 是一个结构体,定义如下: typedef struct UIEdgeInsets { CGF

iOS UIButton EdgeInsets

说一下系统的button,image 和 title的位置关系 默认image 和 title的位置关系: 随便画了草图,有点丑,不过不妨碍理解: 第一种:在button上只设置文字,这个时候,button的文字默认是剧中的. 第二种:在button上只设置图片,也是默认剧中的. 第三种:主要说的是这种,当同时设置图片和文字时,默认图片是剧中的,文字就会被排挤到button的右侧. 这个时候,如果我们想要改变文字和button的位置,就要使用EdgeInsets EdgeInsets UIEdg