NGUI用onSelect检测(监听)Input 控件失焦(非选中状态)

11 篇文章 4 订阅

    今天做自己的游戏,有个功能,就是要玩家输入文字后,点击其他区域(输入框失焦,准确说是非选中状态)自动提交。这就需要监听到Input 输入框的失焦事件,然后回调自定义方法。尝试了半天,最后发现可以用onSelect() 实现。具体方式如下:


1,准备工作。新建一个Input Field 控件,  可以直接把NGUI的预制 Control - Simple Input Field 拖出来用。再新建一个空白的Gameobject(这里我命名为Callback_GameObject),用于接收Input Field产生的非选中状态的回调。如下图:


2,为需要监听的 Input Field 控件,加入监听器 Event Listener。具体为选中 Input Field,然后在Inspector中点击【Add Componet】,搜索Ev,找到Event Listener,添加。(当然也可以在Unity的菜单上选择【Component->NGUI->Internal ->Event Listener】进行添加)


3,编写事件触发后的回调脚本Test_Submit.cs,并把 Input Field  拖拽到source_obj上:

using UnityEngine;
using System.Collections;

public class Test_Submit : MonoBehaviour {

	// 产生事件的游戏体(Input Field)
	public GameObject source_obj;

	// Use this for initialization
	void Start () {
		UIEventListener.Get(source_obj).onSelect = process_select_status;

	}
	
	// Update is called once per frame
	void Update () {
	
	}

	void process_select_status(GameObject raw_obj, bool status) {
		Debug.Log(raw_obj);
		Debug.Log(status); 
		if (status) {
			Debug.Log("+++++++++++++ On select! ");
		}
		else {
			Debug.Log("------------- Out of focus!"); 
		}
	}
}



4,运行验证。首先点击输入框,会得到状态信息为【true】,点击输入框外面,非选中状态会得到状态【false】。

实际上,稍微改改逻辑,就能实现OnSubmit 的功能。




  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值