délai avant effacement GUI texture

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Kubic 3d
Messages : 50
Inscription : 06 Juin 2014 15:07

délai avant effacement GUI texture

Message par Kubic 3d » 14 Déc 2014 11:11

Bonjour

J'ai besoin d'afficher une image au lancement de mon application puis qu'elle disparaisse au bout de 10 secondes.

pour cela j'ai commencé par utiliser le script :
var aTexture : Texture;
function OnGUI() {
if(Event.current.type.Equals(EventType.Repaint))
Graphics.DrawTexture(Rect(10, 10, 100, 100), aTexture);
}

ok, ça marche mais je ne réussi pas à la faire disparaitre au bout de 10 secondes.
Je voudrais aussi la faire apparaitre et disparaitre en utilisant une touche :

var aTexture : Texture;
function Update() {
if (Input.GetKeyDown ("m")) {
if(Event.current.type.Equals(EventType.Repaint))
Graphics.DrawTexture(Rect(10, 10, 100, 100), aTexture);
}
}

mais là non plus je n'y arrive pas.

Merci d'avance

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

Re: délai avant effacement GUI texture

Message par boubouk50 » 15 Déc 2014 10:56

Pour la touche 'm'

Code : Tout sélectionner

if (Input.GetKeyDown ("m"))
Cette instruction permet de savoir quand la touche 'm' a été appuyée. Du coup, elle n'est active qu'une seule fois. Tu dois donc l'utiliser pour changer un état, pas pour dessiner ta texture.

Code : Tout sélectionner

private bool drawmyTexture = true;
function Update() {
//change l'état de drawmyTexture: true ou false
if (Input.GetKeyDown ("m")) {
      drawmyTexture = !drawmyTexture ;
}
//dessine ma GUItexture si drawmyTexture est à true
if(Event.current.type.Equals(EventType.Repaint) && drawmyTexture ) {
     Graphics.DrawTexture(Rect(10, 10, 100, 100), aTexture);
}
Pour les 10 secondes d'affichage au Start(), tu fais un timer qui mets drawmyTexture à false au bout de 10 secondes.
"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

Avatar de l’utilisateur
LudlowFx
Messages : 1367
Inscription : 19 Sep 2013 05:50

Re: délai avant effacement GUI texture

Message par LudlowFx » 15 Déc 2014 13:52

[Modération]

@Kubic 3d : Merci de prendre connaissance de la Nétiquette des Forums et de baliser vos codes !!!
Merci de lire et de prendre en considération la Nétiquette des Forums avant de poster un sujet !

Kubic 3d
Messages : 50
Inscription : 06 Juin 2014 15:07

Re: délai avant effacement GUI texture

Message par Kubic 3d » 15 Déc 2014 13:56

Merci pour ta réponse, et je m'excuse pour ma méconnaissance des règles de balises sur le forum.

Pourrais tu me monter un exemple pour le timer ou bien m'indiquer un lien STP ?

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

Re: délai avant effacement GUI texture

Message par boubouk50 » 15 Déc 2014 14:03

Code : Tout sélectionner

private float timer = 0.0f;

void Update() {
    //a chaque frame on ajoute le temps passé
    timer += Time.deltaTime;
    if (timer >= 10.0f) {
    //ICI tout ce qui se passe à partir de 10s
        ...
    }
}
Ca c'est un timer de base. Pour tes 10 secondes, tu peux également invoquer une coroutine ou vérifier le temps depuis le début de jeu/dernier load, etc.
DOC
"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

Kubic 3d
Messages : 50
Inscription : 06 Juin 2014 15:07

Re: délai avant effacement GUI texture

Message par Kubic 3d » 16 Déc 2014 13:17

Merci beaucoup ! Je vais m'atteler à la rédaction de ce script !

Kubic 3d
Messages : 50
Inscription : 06 Juin 2014 15:07

Re: délai avant effacement GUI texture

Message par Kubic 3d » 18 Déc 2014 10:39

bien, après avoir longtemps bataillé, j'ai sortis ce script :

Code : Tout sélectionner

var GUIEnabled : boolean = false;
var aTexture : Texture;
function Update () {
 if (Input.GetKeyDown ("n"))
         GUIEnabled = !GUIEnabled;
     }
  function OnGUI () {
     if(GUIEnabled) {
        Graphics.DrawTexture(Rect(10, 10, 100, 100), aTexture);
     }
 }
qui me permet de gérer l'affichage de ma GUITEXTURE

puis j'ai rajouté la temporisation :

Code : Tout sélectionner

var time : float = 0;
var GUIEnabled : boolean = true;
var aTexture : Texture;
function Update () {
 time += Time.deltaTime;
      if(time >= 5){
    GUIEnabled = false;
      //time = 0;
      }
      else;
 if (Input.GetKeyDown ("n"))
         GUIEnabled = !GUIEnabled;
     }
  function OnGUI () {
     if(GUIEnabled) {
        Graphics.DrawTexture(Rect(10, 10, 100, 100), aTexture);
     }
 }

sauf que si on rappuie sur la touche "n" pour refaire apparaitre l'image, comme le temps est dépassé, l'image ne reste pas à l'écran. Comment améliorer le script en rajoutant par exemple un reset du temps lorsqu'on presse la touche ?

Quand je pense aux gens qui me disent que la 3D (mon domaine) c'est compliqué !!! Ils devraient voir ce que c'est que scripter!

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

Re: délai avant effacement GUI texture

Message par boubouk50 » 18 Déc 2014 11:01

La réponse est dans ton script: il suffit de remettre le timer à 0.
"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

Kubic 3d
Messages : 50
Inscription : 06 Juin 2014 15:07

Re: délai avant effacement GUI texture

Message par Kubic 3d » 18 Déc 2014 12:17

effectivement, avec la commande

Code : Tout sélectionner

time = 0;
activée ça fonctionne. Sauf que le délai d'affichage de l'image est réduis par rapport à la demande. Par exemple, quand on appuie sur"n", l'image ne reste visible qu'une seconde !!!

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

Re: délai avant effacement GUI texture

Message par boubouk50 » 18 Déc 2014 13:20

il faut également remettre le timer à zéro quand tu appuies sur 'n'

Code : Tout sélectionner

var time : float = 0;
var GUIEnabled : boolean = true;
var aTexture : Texture;
function Update () {
    if (GUIEnabled ) {    //Si ton Gui est affiché alors seulement tu t'occupes du timing
         time += Time.deltaTime;
         if(time >= 5){     //Si ton temps est atteint
              GUIEnabled = false;
              time = 0;
          }
    }

    if (Input.GetKeyDown ("n")) {    //Si tu décides de l'afficher/masquer manuellement tu remets le temps à 0
         GUIEnabled = !GUIEnabled;
         time = 0;
    }
}

  function OnGUI () {
     if(GUIEnabled) {
        Graphics.DrawTexture(Rect(10, 10, 100, 100), aTexture);
     }
 }
"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

Répondre

Revenir vers « Scripting »