- Home /
Getting values out of an IEnumerator method (C#)
Hi! :) I have a procedural generation system which lags quite a bit, and then crashes due to error. It was programmed as a set of functions called in the start function. Due to the crashing, I decided I needed debugging, so I started making Debug.Log calls. NOW the thing lags FAR longer, and has no foreseeable end! So, I decided to make it multithreaded by using StartCoroutine. The only problem? Now I can't return values like I used to be able to. I tried adding a couple extra parameters to my method, and marking them as out, then just using THOSE instead of the return value. Only problem with that is:
Assets/Generate.cs(74,58): error CS1623: Iterators cannot have ref or out parameters
So now I am very much stuck... I am not sure how to get a value out of my coroutine method when it completes without defining global variables, but that would suck as those are not dynamic (Allocated and deallocated as methods start and close) and they are in general frowned upon as a data output method.
Any help would be greatly appreciated!!
--Flynn
Answer by Eric5h5 · Nov 02, 2011 at 07:43 PM
Coroutines aren't threads, and they can only return IEnumerator. I'd suggest going back to your original method...calls to Debug.Log are quite slow, so just limit the amount of Debug.Log calls you make. Such as not putting them inside a long loop, for example.
Hey, thanks for the reply :) I actually wanted to (eventually) $$anonymous$$A$$anonymous$$E this thing multithreaded (or at least multithreaded-ish), as I wanted to show the user generation in real time. What is, in your opinion, the easiest way to start a separate thread in C#? does research on C# multithreading
See the System.Threading class, but keep in $$anonymous$$d that Unity functions can't be called in threads.
Your answer
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
Distribute terrain in zones 3 Answers
What part of the delegate gets passed back?The return type? 1 Answer
C# How to ping servers and get server latency? 1 Answer
Show Debug logs in return method 2 Answers