[RESOLU][MY-AL] Probleme avec Input.Get KeyDown et la console

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
Répondre
Rhadamenthis
Messages : 52
Inscription : 17 Août 2014 01:46

[RESOLU][MY-AL] Probleme avec Input.Get KeyDown et la console

Message par Rhadamenthis » 20 Juil 2022 12:46

version unity : 2021.3.4f1
Windows 10.

Bonjour à tous.
Je m'arrache les cheveux avec le petit code suivant.
Je viens de créer un projet pour tester la commande basique de détection de touche appuyée.
J'ai un plane et une capsule
J'ai le script suivant :

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class input : MonoBehaviour
{   
          // Update is called once per frame
    void Update()
    {
    	 Debug.Log("Test");
        if (Input.GetKeyDown(KeyCode.E))
        {
            Debug.Log("Touche 'E' appoyée");
        }
    }
}
Niveau code, on ne peut plus simple mais...ca ne fonctionne pas au niveau de la console ou à moitié.
Le mot Test apparait bien dans ma console a chaque frame.
Par contre, si j'appuie sur E, rien ne se passe
Par souci de sécurité, j'ai attaché mon script à tous mes GameObjet (capsule, camera et plan) mais ma console me dit nada concernant cette touche. Rien ne s'affiche.
Pourtant , je ne pense pas faire d'erreur.
Quelqu'un pourrait il me renseigner ?
Un grand merci d'avance.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6186
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: [MY-AL] Probleme avec Input.Get KeyDown et la console

Message par boubouk50 » 20 Juil 2022 14:14

La classe Input existe déjà, donc tu devrais lui donner un autre nom. Bon ici, elle commence par une minuscule, donc ça passe mais par convention, une classe commence avec une majuscule. C'est un détail.

Es-tu sur que le Log "Touche 'E' appoyée" n'est pas noyé dans la masse de "Test"?
Déjà, ne mets ce script que sur un seul objet qui est actif.
Ensuite, dans la console Unity, active Collapse. Cela permettra que les Log "Test" soient définis comme un seul et même log, avec un décompte à côté.

Ce système d'Input est celui de l'ancien système, est-il activé ou es-tu passé au nouveau système?
Quelle version d'Unity utilises-tu ?
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Rhadamenthis
Messages : 52
Inscription : 17 Août 2014 01:46

Re: [MY-AL] Probleme avec Input.Get KeyDown et la console

Message par Rhadamenthis » 21 Juil 2022 07:05

Merci pour ta réponse.

La classe Input existe déjà, donc tu devrais lui donner un autre nom. Bon ici, elle commence par une minuscule, donc ça passe mais par convention, une classe commence avec une majuscule. C'est un détail.
C'est changé...autant faire la bonne méthode dès le début ;-)

Es-tu sur que le Log "Touche 'E' appoyée" n'est pas noyé dans la masse de "Test"?
Non, car, cette commande, je l'ai rajouté après avoir testé que l'input ne fonctionnait pas. Si je la met en commentaire, ma console reste vide

Déjà, ne mets ce script que sur un seul objet qui est actif.
C'est fait, je l'ai mis sur la caméra

Quelle version d'Unity utilises-tu ?
version unity : 2021.3.4f1
Windows 10.

Ce système d'Input est celui de l'ancien système, est-il activé ou es-tu passé au nouveau système?
Excellente question mais je n'en ai pas la moindre idée. J'ai installé la version citée ci-dessus, ni plus ni moins.

Merci encore pour ton aide.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6186
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: [MY-AL] Probleme avec Input.Get KeyDown et la console

Message par boubouk50 » 21 Juil 2022 09:01

Je suis un peu dubitatif.

le code semble bon, et d'après la doc de la 2021.3, l'ancien système d'Input est bien présent, le nouveau étant un package. Je n'ai pas plus haut que la 2020.3, je ne peux pas tester.

Il ne me reste que la question stupide: Appuies-tu bien sur la bonne touche? :-D (désolé, je suis obligé de demander)

Sinon, que contient ta scène, y'a-t-il bien l'EventSystem? (je ne suis pas sur qu'il y soit pour quelque chose, mais tentons)
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Rhadamenthis
Messages : 52
Inscription : 17 Août 2014 01:46

Re: [MY-AL] Probleme avec Input.Get KeyDown et la console

Message par Rhadamenthis » 21 Juil 2022 11:40

J'ai testé également sous une version de 2020 sur laquelle le code passe parfaitement.
Mais j'aimerais bien que cela passe aussi sur cette version 2021.
Est-ce la configuration de cette version qui change ? Quelque chose à activer ?

Appuies-tu bien sur la bonne touche? :-D (désolé, je suis obligé de demander)
Oui, oui, j'ai même essayé d'appuyer sur les les 102 touches du clavier...mais rien n'y fait

Sinon, que contient ta scène, y'a-t-il bien l'EventSystem? (je ne suis pas sur qu'il y soit pour quelque chose, mais tentons)
une Light et une camera (scène de base). Le script est sur la caméra

Je te rassure, je suis également très dubitatif.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6186
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: [MY-AL] Probleme avec Input.Get KeyDown et la console

Message par boubouk50 » 21 Juil 2022 14:53

Rhadamenthis a écrit :
21 Juil 2022 11:40
Sinon, que contient ta scène, y'a-t-il bien l'EventSystem? (je ne suis pas sur qu'il y soit pour quelque chose, mais tentons)
une Light et une camera (scène de base). Le script est sur la caméra
C'est donc lié à la version. Avec le nouvel Input system il est possible qu'il faille faire quelque chose.
Tu ne m'as pas répondu : L'EventSystem est dans la scène aussi?

Compare les deux scènes sur chacune des versions, voir si un component est pas manquant.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Rhadamenthis
Messages : 52
Inscription : 17 Août 2014 01:46

Re: [MY-AL] Probleme avec Input.Get KeyDown et la console

Message par Rhadamenthis » 21 Juil 2022 15:43

J'ai la version 2020 au boulot et 2021 chez moi.
Je vais installer la 2020 chez moi et je te dit quoi mais pas avant demain.

Merci

Rhadamenthis
Messages : 52
Inscription : 17 Août 2014 01:46

Re: [MY-AL] Probleme avec Input.Get KeyDown et la console

Message par Rhadamenthis » 22 Juil 2022 07:30

Alléluia !!

J'ai trouvé..
J'avais ancré ma console à côté de mon onglet Game (pour éviter d'avoir une fenêtre en plus).
Mon script :

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class touche : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        //Debug.Log("test");
        if(Input.GetButtonDown("Jump"))
        {
            Debug.Log("touche appuyée");
        }
    }
}
En vue Game, tout fonctionne...en même temps, avec une caméra et une lumière...
Par contre, si je passe sur l'onglet console, ca ne fonctionne plus, j'appuie sur la barre d'espace, rien ne se passe...mais elle affiche bien le nombre de fois ou j'ai appuyé sur la barre d'espace avant de changer d'onglet.
Je "désancre" ma console de la vue Game et la ca fonctionne bien, a chaque fois que j'appuie sur la barre d'espace, ca s'affiche dans ma console.
Pour le GetKeyDown, ca fonctionne aussi.
Du coup, va falloir que je trouve un endroit où mettre ma console 8-)
Dans tous les cas, merci pour l'aide apportée.

(je ne vois pas le tag Résolu)

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6186
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: [MY-AL] Probleme avec Input.Get KeyDown et la console

Message par boubouk50 » 22 Juil 2022 09:11

Pour info, en éditeur, les Input ne sont disponibles que lorsque tu es 'focus' sur la Game View.
La Game View simule une version compilée, et dans une version compilée, quand tu as plusieurs applications ouvertes et que par exemple tu écrit un mail, tu ne veux pas que les autres applications reçoivent les Inputs. Seule celle qui a le "focus" les reçoit. C'est pareil ici.
Donc quand tu testes ton jeu, quand tu le lances la GameView prend le focus, si tu cliques en dehors elle le perd, il faut donc lui redonner pour que les Inputs soient pris en compte.

Ce n'est donc pas un bug mais un comportement logique et voulu.

Pour passer un sujet en résolu, il faut éditer le premier message et ajouter [RESOLU] en début de celui-ci. je m'en charge cette fois-ci.

Bon dev
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Rhadamenthis
Messages : 52
Inscription : 17 Août 2014 01:46

Re: [RESOLU][MY-AL] Probleme avec Input.Get KeyDown et la console

Message par Rhadamenthis » 22 Juil 2022 17:58

Merci, pareillement.
Je me connais, je vais revenir très souvent ::d

Répondre

Revenir vers « (C#) CSharp »