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

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


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

NGUI用onSelect检测(监听)Input 控件失焦(非选中状态)_第1张图片


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

NGUI用onSelect检测(监听)Input 控件失焦(非选中状态)_第2张图片


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!"); 
		}
	}
}

NGUI用onSelect检测(监听)Input 控件失焦(非选中状态)_第3张图片


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

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

NGUI用onSelect检测(监听)Input 控件失焦(非选中状态)_第4张图片




你可能感兴趣的:(Unity,NGUI)