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
- 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
}