Page 1 sur 1

[C#] Simuler une touche avec un bouton

Publié : 02 Fév 2016 05:35
par MasterNovice
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
}

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

Publié : 02 Fév 2016 11:03
par Iwa
Merci pour le partage Master ;)

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

Publié : 02 Fév 2016 21:53
par MasterNovice
De rien, si ça peut servir à certains puis quitte à aider une personne autant que ça profite à tous :)