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 /
This question was closed May 06, 2013 at 04:32 AM by Julien-Lynge for the following reason:

The question is answered, right answer was accepted

avatar image
2
Question by GrinningPariah · May 05, 2013 at 11:45 PM · c#turn-based

How do I start several coroutines and wait until they ALL return? (C#)

I'm making a turn-based game with an arbitrary number of players. Turns happen simultaneously, players plan their move and then when all players submit, the plans are resolved. Think rock-paper-scissors, you decide what you're going to throw then throw at the same time.

So, what I need for the first phase is for it to spawn a coroutine for each player to plan their move, and then submit it to a data structure the original method can see. I need the original method to wait until all the coroutines return.

What I really need help with is how to do that waiting, and how the coroutines will give their returns to the original method?

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

  • Sort: 
avatar image
1
Best Answer

Answer by iwaldrop · May 06, 2013 at 03:29 AM

I'm not convinced that you need more than one coroutine, but either way what you need is a counter. You should know how many players you have, so if the number of responses that you've received is equal to the number of players that you have, then continue.

It would make sense to have one coroutine running on the master that waits for all player submissions. Once all submissions have been received then process the submissions, and send the results to the clients.

Comment
Add comment · Show 3 · 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 GrinningPariah · May 06, 2013 at 04:29 AM 0
Share

I cant find a counter in the scripting docs, what does what you're describing look like in code?

avatar image Julien-Lynge · May 06, 2013 at 04:31 AM 0
Share

This isn't something you can just copy from someone else's code. You will need to figure out how to make a counter yourself. If you don't know, please consult a basic program$$anonymous$$g book or website.

avatar image iwaldrop · May 06, 2013 at 04:34 AM 0
Share

There isn't one particular way that you have to count things, but this is what I was thinking about when I read your question. Because you know how many players you have connected, you know how many replies you need. Once the number of replies that you've received is not less than the number of players that you have you should do something with them.

 int numPlayers;
 List<Reply> replies;
 
 IEnumerator WaitForReplies()
 {
     while (replies.Count < numPlayers)
         yield return null;
 
     // do something once all players have replied.
 }

Follow this Question

Answers Answers and Comments

14 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

Related Questions

The name 'Joystick' does not denote a valid type ('not found') 2 Answers

Distribute terrain in zones 3 Answers

Multiple Cars not working 1 Answer

How would I make a turn based system with simultaneous turns? (C#) 1 Answer

WaitForSeconds/Yield problem 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