Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 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 dhotlo2 · Feb 19, 2014 at 03:46 AM · booleantimescale

Question on timeScale and boolean script.

I have code where when the the player crashes, the timeScale turns to 0 which stops the game and brings up some buttons. On one of the buttons I want to implement it so that once it is pressed, it disappears and cannot be pressed again. I set a boolean so that once timescale = 0 then it is set to true and the button shows. Inside the button if statement, it turns the boolean false and should make it disappear. Problem is, the timescale is still 0 which in turn always makes the boolean true which always shows the button. Sounds a bit confusing, here is the script:

private bool showbutton == false;

if (time.timescale ==0)

{

showbutton = true;

}

if(showbutton){

     if(GUI.button){

        showbutton = false; 

}

Comment
Add comment · Show 4
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 mattyman174 · Feb 19, 2014 at 04:12 AM 0
Share
 private bool showbutton == false;

That is an Incorrect assignment statement.

== is an evaluation not an assignment.

 private bool showbutton = false;
avatar image mattyman174 · Feb 19, 2014 at 04:16 AM 0
Share
 private bool showButton = false;
     
     // Update is called once per frame
     void Update () {
         Debug.Log(showButton);
         Debug.Log(Time.timeScale);
     }
 
     void OnGUI()
     {
         if (GUI.Button(new Rect(10, 10, 200, 30), "Stop Time"))
         {
             Time.timeScale = 0;
             showButton = true;
         }
 
         if (showButton)
         {
             if (GUI.Button(new Rect(10, 50, 200, 30), "Start Time"))
             {
                 Time.timeScale = 1;
                 showButton = false;
             }
         }
     }

Does that do what your asking?

avatar image dhotlo2 · Feb 19, 2014 at 04:28 AM 0
Share

Thanks for the reply but that is unfortunately not what I wanted to do. I have only one equal sign in my script it is just on a different computer so I was typing it from memory. The problem with your script is that for my game, when the player dies then that collision makes timescale = 0. $$anonymous$$y menu is triggered when timescale = 0 as in:

if (time.timescale ==0){

showbutton = true;

}

So you see, if I make showbutton = false with more code, timescale is still at 0 which always make the showbutton = true.

avatar image mattyman174 · Feb 19, 2014 at 04:36 AM 0
Share

You need to add another Variable that detects if you have made a collision already and use that Variable where you assign Time.timeScale to 0.

Consider the following Code on the concept.

     private bool showButton = false;
     private bool hasCollided = false;
     
     // Update is called once per frame
     void Update () {
         Debug.Log(showButton);
         Debug.Log(Time.timeScale);
 
         if (Time.timeScale == 0)
         {
             showButton = true;
         }
     }
 
     void OnGUI()
     {
         if (GUI.Button(new Rect(10, 10, 200, 30), "Simulate Collision") && !hasCollided)  //  After we have already collided once we can no longer enter this statement until hasCollided is false again
         {
             Time.timeScale = 0;
             hasCollided = true;  //  The assignment that tells us we have already collided at least once.
         }
 
         if (showButton)
         {
             if (GUI.Button(new Rect(10, 50, 200, 30), "Start Time"))
             {
                 Time.timeScale = 1;
                 showButton = false;
             }
         }
     }

Obviously where i have used the Button that says "Simulate Collision" would be where you detect that a collision has occured. Im only using this Button for the purpose of this Example.

0 Replies

· Add your reply
  • Sort: 

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

19 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

Related Questions

Having trouble making Level Complete text, GUI appear 0 Answers

Making a pause menu resume 2 Answers

How can bool work in rewinding timescale? 1 Answer

Simple if condition in function not turning off 1 Answer

boolean to stop animation does not work? 1 Answer


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