1
\$\begingroup\$

Is it possible to make a gui Texture display for a certain amount of Time.

\$\endgroup\$

3 Answers 3

1
\$\begingroup\$

Try attaching the following class to the GameObject containing your GUITexture. The texture should have gone hidden 3 seconds after being activated.

[RequireComponent(typeof(GUITexture))] public class GUITestClass : MonoBehaviour { GUITexture gt; void Awake() { gt = GetComponent<GUITexture>(); } void Start() { StartCoroutine("HideGt"); } IEnumerator HideGt() { yield return new WaitForSeconds(3); gt.enabled = false; } } 
\$\endgroup\$
4
  • \$\begingroup\$ Why do you need the coroutine? \$\endgroup\$ Commented Jul 22, 2014 at 8:48
  • \$\begingroup\$ Surely this is just one of the many different ways to solve the case. \$\endgroup\$ Commented Jul 22, 2014 at 8:52
  • \$\begingroup\$ Using a threaded coroutine to simply wait 3 seconds seems overkill. \$\endgroup\$ Commented Jul 22, 2014 at 9:27
  • \$\begingroup\$ @Blue I disagree, this is a great way to deal with the problem. Using CRs is a very efficient and clean way to do things in general. It may be over kill in certain cases but what if you also wanted to play a sound when the texture is hidden? Now you have two things to do on the same 'event'. That single line Destroy now becomes useless. With a CR on the other hand you will have no headaches. \$\endgroup\$ Commented Jul 25, 2014 at 6:04
1
\$\begingroup\$

You can do this with one line of code:

Destroy(gameObject, 3); 

This will destroy the object after three seconds.

Put this in your script after you have sorted out your text and GUI related stuff and you're sorted.

\$\endgroup\$
0
\$\begingroup\$
using UnityEngine; using System.Collections; public class scene9 : MonoBehaviour { // Use this for initialization public Texture2D startWin; public Texture2D setupWin; private bool startwindow = true; private bool setupWindow = false; void Start () { Invoke ("startwindowFun", 2); Invoke ("setupwindowFun",3); Invoke ("loadScene11",5); } // Update is called once per frame void Update () { } public void startwindowFun() { startwindow = !setupWindow; } public void setupwindowFun() { startwindow = setupWindow; setupWindow = !setupWindow; } public void loadScene11() { Application.LoadLevel ("Scene11"); } void OnGUI() { if (startwindow) { GUI.Label (new Rect (270, 300, 160, 100), startWin); } if (setupWindow) { GUI.Label (new Rect (270, 300, 300, 100), setupWin); } } } 

The above code works to load a texture one after the another at a specified time.It worked for me.

\$\endgroup\$

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.