- Home /
show guitexture on button click
i have GUI button and GUI texture. when i press gui button i want my guiTexture to show and stay on screen for 3 seconds then disappear. how would i do that with C# in unity? i am making 2D game. i have code for button and C# script code as well. right now when i click on button guitexture will only stay as long as button is pressed. but i want to stay texture on 3 seconds and then disappear.
 using UnityEngine;
 using System.Collections;
 
 
 public class Q3 : MonoBehaviour {
     
     
     public GUISkin skin = null ;
     public GUITexture guiTextureWrong;
     //public Texture2D wronganswer;
     
 
     void OnGUI () {
         
         
         GUI.skin = skin ;
 
         guiTextureGun.enabled= false;
         
         //  first button. If it is pressed, Application.Loadlevel (1) will be executed
         if(GUI.Button(new Rect(Screen.width * .05f,Screen.height * .15f,320,100), "Orange")) {
             Application.LoadLevel("");
         }
         
         if(GUI.Button(new Rect(Screen.width * .05f,Screen.height * .45f,320,100), "Apple" )) {
             
             Application.LoadLevel("Question4");
             
         }
         if(GUI.Button(new Rect(Screen.width * .05f,Screen.height * .30f,320,100), "Mango" )) {
             guiTextureWrong.enabled= true;
     
         }
         if(GUI.Button(new Rect(Screen.width * .05f,Screen.height * .60f,320,100), "Banana" )) {
             Application.LoadLevel (""); 
         }
         
         
     }
 }
 
Answer by zharik86 · Mar 08, 2014 at 07:40 PM
Simple, see my example(write on CSharp):
  private float timetexture = 3.0f;
  private float timing = 0.0f;
  public GUITexture guiTextureWrong;
  void Update() {
   if (guiTextureWrong.enabled) {
    timing = timing - Time.deltaTime;
    if (timing < 0) {
     guiTextureWrong.enabled = false;
     timing = 0.0f;
    }
   }
  }
  void OnGUI() {
  ... 
   if(GUI.Button(new Rect(Screen.width * .05f,Screen.height * .30f,320,100), "Mango" )) {
    guiTextureWrong.enabled= true;
    timing = timetexture;
   }
  ... 
  }
@ht_shh I am always glad to help. if you are familiar with the concept Coroutine, it is possible to write using it. For example, here so:
  private float timetexture = 3.0f;
  public GUITexture guiTextureWrong;
  void OnGUI() {
   ... 
   if(GUI.Button(new Rect(Screen.width * .05f,Screen.height * .30f,320,100), "$$anonymous$$ango" )) {
    StartCoroutine(this.showguitexture());
   }
   ... 
  }
  public IEnumerator showguitexture() {
   guiTextureWrong.enabled= true;
   yield return new WaitForSeconds(timetexture);
   guiTextureWrong.enabled= false;
  }
I write on memory so there can be inaccuracies. But I hope everything correctly.
i will try the second option you have given as well thank you for the help
Your answer
 
 
              koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                