[C#] Simuler une touche avec un bouton

Cette section est destinée aux scripts partagés par la communauté. Chaque post est destiné à un script. Suivez bien les recommandations.
Avatar de l’utilisateur
MasterNovice
Messages : 610
Inscription : 23 Juil 2011 16:03

[C#] Simuler une touche avec un bouton

Message par MasterNovice » 02 Fév 2016 05:35

Salut,

Voici suite à la question d'un membre du forum, j'ai fait ce petit script qui pourrait peut être intéresser d'autres personnes. J'ai voulu garder la logique du nouveau système d'UI d'unity pour son utilisation, à vous d'adapter le code à vos besoins. Je pense qu'il est suffisamment commenté et claire pour être à la portée de tous. Si des gens veulent l'améliorer et en poster une version plus propre / aboutis, qu'ils le fassent avec plaisir :-D

- NOM DU SCRIPT : BindButtonToKey

-AUTEUR(S): MasterNovice

-DESCRIPTION : Permet de lier un bouton UI à une touche du clavier

-UTILISATION : Voir en commentaire dans le code

-SCRIPT :

Code : Tout sélectionner

using UnityEngine;
using System.Collections;

#region Commentaires / Explications
/*  Petit script qui permet de simuler l'appuie d'une touche avec un Bouton
 *  Utiliser GetEventKeyDown(string key), GetEventKeyUp(string key), GetEventKey(string key)
 *  A la place d'Input.GetKey(string key) etc..
 *  Ajouter un Event Trigger sur le bouton de type :
 *  - Pointer Up pour un relachement de touche, ajouter la fonction ButtonBindKey de ce script et écrivez le nom de la touche (a, escape, right shift ...)
 *  - Pointer Down pour un appuie de touche, ajouter la fonction ButtonBindKey et écrivez le nom de la touche (a, escape, right shift ...)
 *  Si vous utilisez GetEventKey pour un appuie prolongé, vous devrez ajouter les deux Event Trigger et ne rien écrire sur le ButtonBindKey du PointerUp 
 */
#endregion

public class InputManager : MonoBehaviour {

	#region Attributs
	private string bindKey; // La touche 
	private bool listenButtonPressed; // Variable qui contrôle l'appuie du bouton
	#endregion

	#region Unity Fonctions
	// Use for initialisation
	void Start()
	{
		bindKey = "";
		listenButtonPressed = false;

	}
        
        // Upate is called once per frame
	void Update()
	{
		// Exemple 
		if (GetEventKeyDown ("a"))
			print (" Bien joué tu sais appuyer sur une touche ! Ou un bouton...");
	}
	#endregion

	#region Mes Fonctions

	//La fonction à appeler dans un Event Trigger sur le bouton 	
	public void ButtonBindKey(string key)
	{
		bindKey = key;
		listenButtonPressed = false;
	}

	// La fonction qui remplace Input.GetKeyDown(key)
	private bool GetEventKeyDown(string key)
	{
		if (Input.GetKeyDown(key) || bindKey == key && !listenButtonPressed) {
			listenButtonPressed = true;
			return true;
		}
		else {
			key = "";
			return false;
		}
	}

	// La fonction qui remplace Input.GetKeyUp(key)
	private bool GetEventKeyUp(string key)
	{
		if (Input.GetKeyUp (key) || bindKey == key && !listenButtonPressed) {
			listenButtonPressed = true;
			return true;
		}
		else {
			key = "";
			return false;
		}
	}

	// La fonction qui remplace Input.GetKey(key)
	private bool GetEventKey(string key)
	{
		if (Input.GetKey (key) || bindKey == key) {
			return true;
		}

		else {
			key = "";
			return false;
		}
	}

	#endregion
}
Dernière édition par MasterNovice le 29 Fév 2016 23:32, édité 2 fois.

Avatar de l’utilisateur
Iwa
Messages : 1131
Inscription : 25 Avr 2012 16:20
Contact :

Re: [C#] Simuler une touche avec un bouton

Message par Iwa » 02 Fév 2016 11:03

Merci pour le partage Master ;)
"N'est stupide que la stupidité Monsieur..." - Forest Gump
... sauf si tu lis pas ça :)

Si tu as tout ce qu'il te faut, merci de penser à basculer ton sujet en [RESOLU] en éditant ton tout premier post ;)

Avatar de l’utilisateur
MasterNovice
Messages : 610
Inscription : 23 Juil 2011 16:03

Re: [C#] Simuler une touche avec un bouton

Message par MasterNovice » 02 Fév 2016 21:53

De rien, si ça peut servir à certains puis quitte à aider une personne autant que ça profite à tous :)

Répondre

Revenir vers « Scripts »