Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 14 Next capture
2021 2022 2023
2 captures
12 Jun 22 - 14 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by ManuelPaurevic · Jul 06, 2017 at 06:31 AM · c#uitimepausecountdown

Time goes to fast for the code. (C#)

I set up a timer and now I want to make it stop at zero but because its a float it always goes past 0 and doesn't stop the timer then goes into the negatives, this happens with my first code.

Code 1 :

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine.UI; 
 using UnityEngine;
 
 public class timer : MonoBehaviour {
 
     private Text textBox; 
     public float timeTaken;
 
     // Use this for initialization
     void Start () {
         textBox = GetComponent<Text>();
     }
     
     // Update is called once per frame
     void Update () {
 
         if (timeTaken == 00.000) {
             return;
         }

         timeTaken -= Time.deltaTime;
         textBox.text = "" + timeTaken;
 
         textBox.text=timeTaken.ToString("00.000");
     }
 }

Then my other code pauses it but its always like 0.002 to -0.006 and would only land on 0.000 some times.

Code 2 :

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine.UI; 
 using UnityEngine;
 
 public class timer : MonoBehaviour {
 
     private Text textBox; 
     public float timeTaken;
 
     // Use this for initialization
     void Start () {
         textBox = GetComponent<Text>();
     }
     
     // Update is called once per frame
     void Update () {
 
         if (timeTaken <= 00.002) {
             timeTaken = 0f; 
             return;
         }
 
         timeTaken -= Time.deltaTime;
         textBox.text = "" + timeTaken;
 
         textBox.text=timeTaken.ToString("00.000");
     }
 }

Is there anyway to make it stop at 0 all the time or will I have to deal with it being off only a little bit and does the frame rate have any factors on how fast the time goes??

Comment
Add comment · Show 1
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image FunIsDangerous · Jul 06, 2017 at 06:48 AM 0
Share

it's not because it's too fast, but because you are removing from it a number more than 0.001 (Time.deltaTime). THe only way to fix that is by setting it to 0 manually

2 Replies

· Add your reply
  • Sort: 
avatar image
2
Best Answer

Answer by toddisarockstar · Jul 06, 2017 at 07:35 AM

Function update repeats itself when the screen display refreshes itself. unfortunatly if your user has a slower machine or if your code is heavy function update runs slower. so function update does not always run at a consistant time interval. most people mesure this as FPS. to fix the problem Time.deltatime is simply a measurement of time passing with each frame so you can multipy it to things when you want time or distance consistency in update. the float value of time.deltatime is usually not going to land exactly on zero at any point because it is a float so a == statement never catches usually . you have to use > or <. here is what i think you want to do:

 void timer float;
 
 void Start (){timer=5;}
     void Update(){
     if(timer>0){timer-=Time.deltaTime;
                 //this code keeps  running before the timer
         }else{
             //this code is running after the timer
         }
 }



this is an example of a repeating timer:

     timer-=Time.deltaTime;
     if(timer<0){timer +=5f;
         //this code runs only once every intervold
 }
 
 

here is an exaple of a one time happening when a timer runs out:

 void timer float;
  
  void Start (){timer=5;}
      void Update(){
      if(timer>0){timer-=Time.deltaTime;
                          if (timer<=0){
  //this would only happen once
               
 }}
 
 }


you will never get an even zero cause the frame is likely not going to end exactly on the time. if its that important to you. you can use intregers in FixedUpdate. cause Fixed Update runs cosistantly with time without the need for deltatime. and you can have your even zero when the timer runs out!!!

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image
0

Answer by SohailBukhari · Jul 06, 2017 at 07:02 AM

will stop when time ends.

  if (timeTaken <= 0)
         {
             timeTaken = 0;
         }

and in the update your are decreasing time continuously.Check whether timeTaken is greater then zero then execute timeTaken -= Time.deltaTime;

 void Update()
 {
     if (timeTaken >= 0.01f)
     {
         timeTaken -= Time.deltaTime;
     }
     if (timeTaken <= 0)
     {
         timeTaken =0f;
     }

 }
Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

360 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Slider to modify a countdown time in another scene 0 Answers

Why does my MatchTime Class not work when using Properties? 1 Answer

Slider to modify a countdown time in another scene 0 Answers

Pause Menu Text Not Rendering 0 Answers

How do i have a pause after i resume game C# 6.4 0 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges