1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| // 包装器 public class CoroutineWithData { public Coroutine coroutine { get; private set; } public object result; private IEnumerator target; public CoroutineWithData(MonoBehaviour owner, IEnumerator target) { this.target = target; this.coroutine = owner.StartCoroutine(Run()); }
private IEnumerator Run() { while (target.MoveNext()) { result = target.Current; yield return result; } } }
// 真正执行逻辑的代码 IEnumerator LoadSomeStuff() { WWW www = new WWW("https://caihua.tech"); yield return www; if (string.IsNullOrEmpty(www.error)) { yield return www.text; } else { yield return "fail"; } }
// 使用 ... CoroutineWithData cd = new CoroutineWithData(this, LoadSomeStuff()); yield return cd.coroutine; Debug.Log("result is " + cd.result); ...
|