Getting values out of an IEnumerator method (C#)

Hi! :slight_smile: 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!!


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.