Réimpression | Système d'événements de contrôle et de surveillance des boutons de l'UGUI Research Institute

Auteur : Amematsu MOMO

Article original : Système d'événements de contrôle et de surveillance des boutons de l'UGUI Research Institute

Publié par Yusong MOMO le 27 octobre 2014 à l'Institut de recherche du programme Yusong MOMO

C'est un bon article, juste pour mémoire.

Continuez à apprendre, je pense que tout le monde utilisera UIEventListener pour gérer les événements lors du développement de NGUI, alors que devrions-nous faire dans UGUI ? Regardons d'abord les événements d'UGUI.

Événements pris en charge

Le système d'événements prend en charge un certain nombre d'événements, et ils peuvent être personnalisés davantage dans des InputModules personnalisés écrits par l'utilisateur.

Les événements pris en charge par StandaloneInputModule et TouchInputModule sont fournis par l'interface et peuvent être implémentés sur un MonoBehaviour en implémentant l'interface. Si vous avez configuré un EventSystem valide, les événements seront appelés au bon moment.

IPointerEnterHandler – OnPointerEnter – Appelé lorsqu'un pointeur entre dans l'objet
IPointerExitHandler – OnPointerExit – Appelé lorsqu'un pointeur quitte l'objet
IPointerDownHandler – OnPointerDown – Appelé lorsqu'un pointeur est pressé sur l'objet
IPointerUpHandler – OnPointerUp – Appelé lorsqu'un pointeur est relâché (appelé sur l'original l'objet pressé)
IPointerClickHandler – OnPointerClick – Appelé lorsqu'un pointeur est pressé et relâché sur le même objet
IBeginDragHandler – OnBeginDrag – Appelé sur l'objet de glissement lorsque le glissement est sur le point de commencer
IDragHandler – OnDrag – Appelé sur l'objet de glissement lorsqu'un glissement se produit
IEndDragHandler - OnEndDrag - Appelé sur l'objet glisser lorsqu'un glisser se termine
IDropHandler – OnDrop – Appelé sur l'objet où un glissement se termine
IScrollHandler – OnScroll – Appelé lorsqu'une molette de la souris défile
IUpdateSelectedHandler – OnUpdateSelected – Appelé sur l'objet sélectionné à chaque tick
ISelectHandler – OnSelect – Appelé lorsque l'objet devient l'objet sélectionné
IDeselectHandler – OnDeselect – Appelé sur l'objet sélectionné devient désélectionné
IMoveHandler – OnMove – Appelé lorsqu'un événement de déplacement se produit (gauche, droite, haut, bas, etc.)
ISubmitHandler – OnSubmit – Appelé lorsque le bouton de soumission est enfoncé
ICancelHandler – OnCancel – Appelé lorsque le bouton d'annulation est enfoncé

Unity - Manuel : Événements pris en charge

OK Comment UGUI peut-il surveiller de la même manière que NGUI ? Ici, je vais vous donner une idée, mettez le code suivant dans votre projet.

using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;
public class EventTriggerListener : UnityEngine.EventSystems.EventTrigger{
	public delegate void VoidDelegate (GameObject go);
	public VoidDelegate onClick;
	public VoidDelegate onDown;
	public VoidDelegate onEnter;
	public VoidDelegate onExit;
	public VoidDelegate onUp;
	public VoidDelegate onSelect;
	public VoidDelegate onUpdateSelect;
 
	static public EventTriggerListener Get (GameObject go)
	{
		EventTriggerListener listener = go.GetComponent<EventTriggerListener>();
		if (listener == null) listener = go.AddComponent<EventTriggerListener>();
		return listener;
	}
	public override void OnPointerClick(PointerEventData eventData)
	{
		if(onClick != null) 	onClick(gameObject);
	}
	public override void OnPointerDown (PointerEventData eventData){
		if(onDown != null) onDown(gameObject);
	}
	public override void OnPointerEnter (PointerEventData eventData){
		if(onEnter != null) onEnter(gameObject);
	}
	public override void OnPointerExit (PointerEventData eventData){
		if(onExit != null) onExit(gameObject);
	}
	public override void OnPointerUp (PointerEventData eventData){
		if(onUp != null) onUp(gameObject);
	}
	public override void OnSelect (BaseEventData eventData){
		if(onSelect != null) onSelect(gameObject);
	}
	public override void OnUpdateSelected (BaseEventData eventData){
		if(onUpdateSelect != null) onUpdateSelect(gameObject);
	}
}

Ensuite, écrivez le code pour surveiller le bouton dans votre interface.

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using UnityEngine.Events;
public class UIMain : MonoBehaviour {
	Button	button;
	Image image;
	void Start () 
	{
		button = transform.Find("Button").GetComponent<Button>();
		image = transform.Find("Image").GetComponent<Image>();
		EventTriggerListener.Get(button.gameObject).onClick =OnButtonClick;
		EventTriggerListener.Get(image.gameObject).onClick =OnButtonClick;
	}
 
	private void OnButtonClick(GameObject go){
		//在这里监听按钮的点击事件
		if(go == button.gameObject){
			Debug.Log ("DoSomeThings");
		}
	}
}

Bien qu'il existe d'autres méthodes de surveillance, je pense que cette méthode est la plus scientifique.Vous pouvez continuer à développer la classe EventTriggerListener en fonction des besoins de votre projet.

Je suppose que tu aimes

Origine blog.csdn.net/qq_39858654/article/details/124178574
conseillé
Classement