Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 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 /
  • Help Room /
avatar image
0
Question by venomtail · Dec 04, 2019 at 09:25 PM · c#return value

Bool is not returning a new bool value

So I wanted to have a timer that after a cetrain time turns a bool to false. My idea was that he bool would be called and in it, it would count down 0.5 seconds and then send back the bool.

However I do not get sent back the bool. It will call the bool once, the "Warning" gameobject will spawn and the bool will turn to "true", but it does not change back to false.

There has to be a logical error somehwere right? I guess but it's just not clicking for me. Unless there is something I don't know yet in how C# works with returning values.

Here's the code:

 bool WarningSpawned = false;
 public GameObject Warning;

    void FixedUpdate()
     {
     Debug.Log("The warning state is : " + WarningSpawned);

               if (WarningSpawned == false)
         {
             WarningSpawned = true;
             SpawningWarning(WarningSpawned, Warning);
         }       
 }

    bool SpawningWarning(bool WarningSpawned, GameObject Warning)
 {

     float WarningCooldown = 0.5f;

     CountdownNumber -= Time.deltaTime;

     Instantiate(Warning, transform.position, Quaternion.identity);

     if (WarningCooldown <= 0)
     {
         WarningSpawned = false;
     }

     return WarningSpawned;
 }

Does anyone know what it could be? Is maybe Time.deltaTime not allowed to be anywhere but Start, Update and FixedUpdate? Thanks

Comment
Add comment
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

1 Reply

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

Answer by Larry-Dietz · Dec 04, 2019 at 09:49 PM

You have WarningSpawned as a global variable, at the top.

You are passing it to SpawningWarning unnecessarily, causing that routine to use a private local copy of the variable, so your global variable is not being changed by the routine.

Also, that routine is only being called 1 time, when the bool is False, so your countdown is not working.

Here's the best way to fix this, in my opinion

 bool WarningSpawned = false;
 float WarningCooldown = 0.5f;

  public GameObject Warning;
     void FixedUpdate()
      {
      Debug.Log("The warning state is : " + WarningSpawned);
                if (WarningSpawned == false)
          {
              WarningSpawned = true;
              SpawningWarning(Warning);
          }  
          else 
          {
                WarningCooldown -= Time.deltaTime;
                if (WarningCooldown <= 0)
                {
                   WarningSpawned = false;
                   WarningCooldown=0.5f //Reset it for next time
                 }
          }
  }
  void SpawningWarning(GameObject Warning)
  {
      Instantiate(Warning, transform.position, Quaternion.identity);         
  }

Hope this helps, -Larry

Comment
Add comment · Show 4 · 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 Larry-Dietz · Dec 04, 2019 at 09:56 PM 0
Share

One thing to keep in $$anonymous$$d here, also, is that as soon as WarningSpawned changes back to false, then very next update is going to set it back to true, and start the cycle again.

If you are not wanting this to just cycle back and forth, you will probably want the initial change from false to true to occur in a trigger somewhere.

avatar image venomtail · Dec 05, 2019 at 01:52 AM 0
Share

Yes this works just as I wanted. Thank you.

And yes. I should have mentioned above but I did want this to loop.

And to learn from this, does this means that time countdowns do not work inside whatever is called? Is it because when the bool was called, the times was still at 0.5 seconds, so above 0 thus it did not go into the if statement to turn the bool to *"true?"

avatar image Larry-Dietz venomtail · Dec 05, 2019 at 03:47 AM 0
Share

Glad I could help.

Basically, yes, Your cooldown time was being set to 0.5 in the one and only time that function ran. It never ran again, so it never counted down. (However, since you set the timer to .05 at the top of that function, even if it did run again, it would just set it to .05 and still never hit 0) Only the update functions run over and over, unless you setup a function to loop like that with InvokeRepeating, or by calling it from within a loop (or from an update function)

So what the modified FixedUpdate is doing now, is if your bool is false, it sets it to true, and calls the SpawningWarning function.

On the next update cycle, your bool is true, so the else clause runs, reducing your cool down timer until it hits 0 or less. When it hits 0 or less, it resets your bool and sets your cool down timer back to the initial value for the next run.

avatar image Larry-Dietz Larry-Dietz · Dec 05, 2019 at 03:53 AM 0
Share

Also, a couple of other things to point out.

In your SpawningWarning function, you are passing in the warning object. But this object is global, so would already be available to the function.

It could have been like this...

 void SpawningWarning()
   {
       Instantiate(Warning, transform.position, Quaternion.identity);         
   }

with the call in FixedUpdate being ... SpawningWarning();

And while we are simplifying things, unless you are going to eventually make SpawningWarning do something other than the instantiate, I would just eli$$anonymous$$ate it entirely, and do the instantiate in the FixedUpdate like this...

 bool WarningSpawned = false;
 float WarningCooldown = 0.5f;
 public GameObject Warning;
     
          void FixedUpdate()
           {
           Debug.Log("The warning state is : " + WarningSpawned);
                     if (WarningSpawned == false)
               {
                   WarningSpawned = true;
                   Instantiate(Warning, transform.position, Quaternion.identity);   
               }  
               else 
               {
                     WarningCooldown -= Time.deltaTime;
                     if (WarningCooldown <= 0)
                     {
                        WarningSpawned = false;
                        WarningCooldown=0.5f //Reset it for next time
                      }
               }
       }
 

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

743 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 avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image 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

Can I store a value computed in one method outside of that method? 2 Answers

Not all paths return a value 1 Answer

[C#] Not all code paths return a value 2 Answers

Returning Values from custom namespaces C# 1 Answer

How do I reference an incremented int with one button, that was incremented from another button? 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