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 CirseiHyuga · Aug 13, 2016 at 01:09 PM · coroutinewaitforseconds

Problem with coroutine / create a gap of 5 seconds [C#]

Hello, I'm experimenting something with coroutines, but it doesn't seem to work. I would like to play each part of one coroutine each time I press the space bar. That works correctly. But, also, I would like to create a 5 second gap beetween each part of the coroutine.

For example, if I press space, It will write "first part". If I press again before 5 seconds, I would like nothing happen. For the moment, the 5 second constraint doesn't seem to be effective. Some idea to help me do that ?

 using UnityEngine;
 using System.Collections;
 
 public class CoroutineTest : MonoBehaviour {
 
     private IEnumerator test;
 
     void Awake()
     {
         test = Test();
     }
 
     void Update()
     {
         if (Input.GetKeyDown("space"))
         {
             StartCoroutine(test);
         }
     }
 
     IEnumerator Test()
     {
         Debug.Log("first part");
         yield return new WaitForSeconds(5);
         StopAllCoroutines();
         Debug.Log("second part");
         yield return new WaitForSeconds(5);
         StopAllCoroutines();
         Debug.Log("third part");
         yield return new WaitForSeconds(5);
         StopAllCoroutines();
         Debug.Log("forth part");
         yield return new WaitForSeconds(5);
         StopAllCoroutines();
         while (true)
         {
             Debug.Log("fifth and last part");
             yield return new WaitForSeconds(5);
             StopAllCoroutines();
         }
     }
 }

Comment
Add comment · Show 2
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 Mintonne · Aug 15, 2016 at 08:50 AM 0
Share

If you stop a coroutine then call it again.... The coroutine starts from the begin.

Your code will always print "first part" every time you press the space key.

avatar image CirseiHyuga Mintonne · Aug 15, 2016 at 10:51 AM 0
Share

No it don't, It print well all of the part in the right order when I press the space key ^^... But the WaitForSeconds doesn't seem to work. Whatever the wait time I write, it doesn't change anything.

1 Reply

· Add your reply
  • Sort: 
avatar image
0

Answer by CirseiHyuga · Jan 25, 2017 at 11:51 AM

The coroutine doesn't restart from the beginning if you "instantiate" it in an IEnumerator variable. An other thing I learn about coroutine is that the method StopAllCoroutine() will be effective on the next frame, so we must WaitForEndOfFrame after this method.

Hoping those clues will help someone :)

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

67 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

Related Questions

C# coroutine not waiting on waitForSeconds? 2 Answers

Could not load source 'Coroutines.cs': No source available. 1 Answer

Am I using this Coroutine and IEnumerator correctly? 1 Answer

Trying to make my code pause using coroutines, what am i doing wrong? 2 Answers

Performance Issue with Coroutines 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