Page 1 sur 1

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

Publié : 20 Juil 2022 12:46
par Rhadamenthis
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.

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

Publié : 20 Juil 2022 14:14
par boubouk50
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 ?

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

Publié : 21 Juil 2022 07:05
par Rhadamenthis
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.

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

Publié : 21 Juil 2022 09:01
par boubouk50
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)

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

Publié : 21 Juil 2022 11:40
par Rhadamenthis
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.

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

Publié : 21 Juil 2022 14:53
par boubouk50
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.

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

Publié : 21 Juil 2022 15:43
par Rhadamenthis
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

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

Publié : 22 Juil 2022 07:30
par Rhadamenthis
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)

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

Publié : 22 Juil 2022 09:11
par boubouk50
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

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

Publié : 22 Juil 2022 17:58
par Rhadamenthis
Merci, pareillement.
Je me connais, je vais revenir très souvent ::d