- Home /
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);
}
}
Answer by karl_jones · May 20, 2015 at 09:09 AM
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);
}
}
Here is a super tip :) The Destroy function has a second parameter which lets you specify a delay, no need for coroutines or Invokes!
using UnityEngine;
using System.Collections;
public class TextTimer : $$anonymous$$onoBehaviour
{
public float time = 5; //Seconds to read the text
void Start ()
{
Destroy(gameObject, time);
}
}
(whispers : psst... you're forgetting the infamous "F" in your floats) xD
You don't need the 'F', the compiler generates the same IL code with or without. Although its probably not a bad idea as good practice :)
Its only if you use a value with a decimal. $$anonymous$$G 5.1 would be considered a double unless you add the f.
Ah, ok. Yep, that still throws an error. Just tried it xD
http://answers.unity3d.com/questions/251157/the-problem-about-color-in-c.html
Answer by zeppike · May 20, 2015 at 09:12 AM
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);
}
}
Answer by ChristianBlandford · Dec 30, 2015 at 01:50 PM
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 :D
Answer by pryansi96 · Nov 17, 2016 at 07:20 AM
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);
}
Answer by BeardBadshah · Aug 01, 2019 at 06:31 AM
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 ?
Your answer
Follow this Question
Related Questions
Custom text UI 1 Answer
How to make a user interface form? 2 Answers
Pop up text from Floating text positioner interface c# 0 Answers
UI behavior on resolution change 1 Answer