Bonjour,

La classe Input de Unity est une classe sealed : https://docs.unity3d.com/ScriptReference/Input.html

De ce fait je ne peux pas lui faire une classe dérivée.
Comme je souhaite lui ajouter seulement des méthodes, je me dirige vers la solutions des extensions methodes.

Voici ma classe d'extension :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
namespace InputAdvancedNS {
 
	public static class InputAdvanced {
 
		//_____ METHODES ____________________________________________________________
		/* -------------------------------------------------------------------------------------------------------------------------
		 * Return a boolean to say if the key combo have just been pressed down this frame
		 * ------------------------------------------------------------------------------------------------------------------------- */
		public static bool GetKeyDown (this Input input, KeyCode key1, KeyCode key2) {
			bool result = false;
			// Check if both key are set
			if (key1 != KeyCode.None && key2 != KeyCode.None) {
				// Both key have just been pressed down
				if (Input.GetKeyDown(key1) && Input.GetKeyDown(key2)) { result = true; }
 
				// key1 was already pressed down and key2 have just been pressed
				else if (Input.GetKey(key1) && Input.GetKeyDown(key2)) { result = true; }
 
				// key2 was already pressed down and key1 have just been pressed
				else if (Input.GetKeyDown(key1) && Input.GetKey(key2)) { result = true; }
 
			// If only 1 key is set
			} else if (key1 != KeyCode.None || key2 != KeyCode.None) {
				if (key1 != KeyCode.None && Input.GetKeyDown(key1)) { result = true; } 
				else if (key2 != KeyCode.None && Input.GetKeyDown(key2)) { result = true; }
			}
 
			return result;
		}
		// ...
	}
}
Et voici mon appel de cet extension methode :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
using System.Collections.Generic;
using UnityEngine;
using InputAdvancedNS;
 
public class BindedKeyListener : MonoBehaviour {
 
	//...
	if (Input.GetKeyDown(key.Key1, key.Key2)) {}
}
Le problème ici c'est que Visual Studio me dit : "Aucune surcharge pour la méthode 'GetKeyDown' n'accepte les arguments 2.

A savoir que la classe Input de base a déjà des fonctions avec le même nom mais avec des signatures différentes (https://docs.unity3d.com/ScriptRefer...etKeyDown.html) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
public static bool GetKeyDown (KeyCode key1);
public static bool GetKeyDown(string name);
Je commence seulement avec les extension methodes du coup je me dit qu'un détail m'échappe.
Est-ce que quelqu'un a une idée ?

D'avance merci.