How to make disappear a GUI text after an amount of time?

I am trying to make a GUI text disappear after 5 seconds, but my C# script does not work. Any sugestions?

using UnityEngine;
using System.Collections;

        public class TextTimer : MonoBehaviour {
	var time = 5; //Seconds to read the text
	
	function Start (){
		yield WaitForSeconds(time);
		Destroy(gameObject);
	}
	
        }

Like Lo0NuhtiK said your mixing javascript into your c#.

Do this:

using UnityEngine;
using System.Collections;

public class TextTimer : MonoBehaviour
{
	public float time = 5; //Seconds to read the text

	IEnumerator Start ()
	{
		yield return new WaitForSeconds(time);
		Destroy(gameObject);
	}
}

I would use Invoke(), but your script doesn’t look like a C# script. I would try something like this:

using UnityEngine;
using System.Collections;
 
public class TextTimer : MonoBehaviour {
     float time = 5f; //Seconds to read the text
     
     void Start()
     {
         Invoke("Hide", time);
     }

     void Hide(){
         Destroy(gameObject);
     }
     
}

@snobis

So Much Easier In Java Script!

function Start(){
          yield WaitForSeconds(5);
                   Destroy(gameObject);
}

If you want to Do it by a variable, Do it like the following -

var TimeLength : int = 5;

function Start(){
              yield WaitForSeconds(TimeLength);
                       Destroy(gameObject);
}

Lol I am only 12 lol :smiley:

Hey, Please help me.

I am creating an environment of forest where some enemy soldiers will be running here and there and subject has to observe them.After few seconds of observation, The questions will be asked like behind which trees soldiers are hiding.The subject(who is playing) has to click the trees.If he has clicked correct tree then a canvas which shows a text as “correct” will appear and again after clicking the next tree,the correct/incorrect canvas should appear.

I want the canvas to appear for few seconds.I have tried many codes but they are not useful.Please someone help me out.It would be very thankful for me.

Thanks in advance.

Here is my code that i am using:

// Update is called once per frame

void Update()

{

 o[0] = new Vector3(304f, 0f, 282.7f);
 o[1] = new Vector3(299.6f, 0f, 318.5f);
     ray = Camera.main.ScreenPointToRay(Input.mousePosition);
     if (Physics.Raycast(ray, out hit))
     {
         if (Input.GetMouseButtonDown(0))
         {
             i++;
             int j = 0;
             flag = 0;
             for (; j < 2; j++)
             {
               if (V3Equal(new Vector3(hit.point.x, hit.point.y, hit.point.z), o[j]))
                 {
                     flag = 1;
                 }
              }
             if (flag == 1)
             {
                 incorrectCanvas.SetActive(false);
                 correctCanvas.SetActive(true);
                 StartCoroutine(LateCall());
              }
             else if (flag == 0)
             {
                 correctCanvas.SetActive(false);
                 incorrectCanvas.SetActive(true);
             StartCoroutine(LateCall());
         }
         }
     }

}

IEnumerator LateCall()

{
yield return new WaitForSeconds(10);

}

what if we want to show that same panel or GUI elemant again after some time. like in the leveling game for round 1 and then round 2 and so on ?