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 superme2012 · Jun 11, 2015 at 07:49 AM · coroutineienumeratorstartcoroutinewww classreturn value

Return result of the IEnumerator.

Hi all, I did a little update on the code

Been a long time since I have asked anything but this one has bugged me for a while.

I will keep it simple, is this possible:

 void Start(){
     WWW data = myDataClass.StartCoroutine(myDataClass.getData(data_id));
 }

Basically I want the Coroutine / IEnumerator in another class so I can better manage the code. I have looked at some of the solutions on the forum but none resemble the simplicity of the above.

this works fine but cannot catch a response as far as I can see:

 myDataClass.StartCoroutine(myDataClass.getData(data_id));

I did solve this in the past using a notification manager, and I will probably look to use delegation but not sure as yet if it’s the only or best way to go about it.

If I could just do the WWW data = myDataClass.StartCoroutine(myDataClass.getData(data_id)); then it seems like the best way.

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

2 Replies

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

Answer by fafase · Jun 11, 2015 at 07:52 AM

WWW already has a similar approach I would guess.

 WWW www = new WWW(url);
 yield return www:

there you have your www object with the data.

EDIT:

 WWW www = null;
 myDataClass.StartCoroutine(myDataClass.getData(data_id, result => target = result));
 
 public class MyDataClass:MonoBehaviour
 {
     public IEnumerator getData( string data_id, Action<WWW>action)
     {
            WWW www = new WWW(data_id);
            yield return www;
           action(www);
     }
 }

 
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 superme2012 · Jun 11, 2015 at 09:21 AM 0
Share

hmmm I must be missing something here, will update the question code.

avatar image fafase · Jun 12, 2015 at 07:54 AM 0
Share

This is the same as your code example, except the WWW is no more on the receiving end but as a parameter.

avatar image superme2012 · Jun 12, 2015 at 08:21 AM 0
Share

That look like it!! .. Will test it out later and mark as answered.

avatar image fafase · Jun 12, 2015 at 08:39 AM 0
Share

The method is stripped from any important check, like if the www has succeeded and what should happen in case of failure. Think about it.

avatar image
0

Answer by Kiwasi · Jun 11, 2015 at 07:58 AM

Typically I would wrap the data and coroutine in a class together. The class can contain a bool isDone and another field for the result. The WWW class in Unity is a good example of this.

Comment
Add comment · Show 1 · 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 superme2012 · Jun 11, 2015 at 09:27 AM 0
Share

I did an update on the question code, it was not clear on what I'm asking.

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

22 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

Related Questions

Can I use StartCoroutine inside of the same coroutine with a new variable? 0 Answers

yield return M() vs yield return StartCoroutine 2 Answers

Coroutine error with result 1 Answer

Moving Coroutines To One Method 1 Answer

Item duration doesn't stack 3 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