Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 14 Next capture
2021 2022 2023
2 captures
13 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 Paliandro · Mar 01, 2021 at 03:28 PM · updateresetvaluesrestartgetkeydown

Value sometimes isn't updated.

I have a timer that counts minutes, seconds and milliseconds survived. After death the player's current, previous and best time are shown. As they press space they start a new run, and their former current time should be updated into their next previous time. However, for some reason, sometimes the previous time gets updated into a blank, and sometimes it updates correctly. This worked correctly previously, when I had this working through a binaryformatter, but as I changed it into working through playerprefs, it doesn't operate reliably anymore.

 public class WebTimer : MonoBehaviour
 {
 
     public Text timerText;
     public Text currentText;
     public Text previousText;
     public Text bestText;
 
     public GameObject current;
     public GameObject previous;
     public GameObject best;
 
 
     private float milliseconds = 0;
     private float seconds = 0;
     private float minutes = 0;
 
     private float preMilliseconds = 0;
     private float preSeconds = 0;
     private float preMinutes = 0;
 
     private float bestMilliseconds = 0;
     private float bestSeconds = 0;
     private float bestMinutes = 0;
 
     private GameOver death;
 
 
     public void Awake()
     {
 
             preMinutes = PlayerPrefs.GetFloat("preMinutes");
             preSeconds = PlayerPrefs.GetFloat("preSeconds");
         preMilliseconds = PlayerPrefs.GetFloat("preMilliseconds");
 
         bestMinutes = PlayerPrefs.GetFloat("bestMinutes");
         bestSeconds = PlayerPrefs.GetFloat("bestSeconds");
         bestMilliseconds = PlayerPrefs.GetFloat("bestMilliseconds");
 
     }
 
     private void Update()
     {
         if (!GameObject.Find("BorderCollider").GetComponent<GameOver>().gameOver)
         {
             minutes = (int)(Time.timeSinceLevelLoad / 60f);
             seconds = (int)(Time.timeSinceLevelLoad % 60f) % 60;
             milliseconds = (int)(Time.timeSinceLevelLoad * 1000f) % 1000;
 
             timerText.text = "Time:  " + minutes.ToString("00") + ":" + seconds.ToString("00") + ":" + milliseconds.ToString("00");
 
         }
 
 
         if (GameObject.Find("BorderCollider").GetComponent<GameOver>().gameOver)
         {
 
             if (minutes > bestMinutes)
             {
                 bestMilliseconds = milliseconds;
                 bestSeconds = seconds;
                 bestMinutes = minutes;
             }
             else if (minutes == bestMinutes && seconds > bestSeconds)
             {
                 bestMilliseconds = milliseconds;
                 bestSeconds = seconds;
                 bestMinutes = minutes;
             }
             else if (seconds == bestSeconds && milliseconds > bestMilliseconds)
             {
                 bestMilliseconds = milliseconds;
                 bestSeconds = seconds;
                 bestMinutes = minutes;
             }
 
 
             if (Input.GetButtonDown("Jump")) //this is the part where the updating of values should happen, but it only occurs sometimes
             {
                 preMilliseconds = milliseconds;
                 preSeconds = seconds;
                 preMinutes = minutes;
 
 
 
                 if (GameObject.Find("BorderCollider").GetComponent<GameOver>().gameOver && Input.GetButtonDown("Jump"))
                 {
                     SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
 
                     current.SetActive(false);
                     previous.SetActive(false);
                     best.SetActive(false);
                 }
             }
 
             current.SetActive(true);
             previous.SetActive(true);
             best.SetActive(true);
 
             currentText.text = "Time Survived: " + minutes.ToString("00") + ":" + seconds.ToString("00") + ":" + milliseconds.ToString("00");
             previousText.text = "Previous Time: " + preMinutes.ToString("00") + ":" + preSeconds.ToString("00") + ":" + preMilliseconds.ToString("00");
             bestText.text = "Best Time:      " + bestMinutes.ToString("00") + ":" + bestSeconds.ToString("00") + ":" + bestMilliseconds.ToString("00");
             Save();
 
             if (Input.GetKeyDown("escape"))
             {
 
                 preMilliseconds = milliseconds;
                 preSeconds = seconds;
                 preMinutes = minutes;
                 Application.Quit();
             }
         }
     }
 
 
     public void Save()
     {
 
         PlayerPrefs.SetFloat("preMinutes", preMinutes);
         PlayerPrefs.SetFloat("preSeconds", preSeconds);
         PlayerPrefs.SetFloat("preMilliseconds", preMilliseconds);
 
         PlayerPrefs.SetFloat("bestMinutes", bestMinutes);
         PlayerPrefs.SetFloat("bestSeconds", bestSeconds);
         PlayerPrefs.SetFloat("bestMilliseconds", bestMilliseconds);
     }
 
 
 }
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 Paliandro · Mar 01, 2021 at 04:34 PM 0
Share

Something to add: Tried with a Debug.Log, had it printing the preSeconds into the log, and even if the text in-game was left blank, the log still contained the correct value.

1 Reply

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

Answer by Paliandro · Mar 01, 2021 at 07:13 PM

I'm dumb, the answer was that my text object wasn't wide enough and some combinations of characters caused it to dissapear.

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

117 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

Related Questions

Restart Mecanim's Animator controller 3 Answers

is resarting unity to update scripts a bug or an error on my part? 0 Answers

how do i make this to a negative (ShopRespawn < 180)? 1 Answer

Restart a function 1 Answer

How to restart/rerun a script? 2 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