diff --git a/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs b/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs index 8a7500b..74714b9 100644 --- a/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs +++ b/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs @@ -665,6 +665,16 @@ item.EnumeratorStack.Push(item.Enumerator); item.Enumerator = enumerable.GetEnumerator(); } + else if (next is IEnumerator enumerator) + { + if (item.EnumeratorStack == null) + { + item.EnumeratorStack = new Stack(); + } + + item.EnumeratorStack.Push(item.Enumerator); + item.Enumerator = enumerator; + } else if (next is WaitForSeconds seconds) //等待秒数 { item.WaitFor(seconds); @@ -999,17 +1009,25 @@ /// /// 开启一个协程, 返回协程 id, 协程是在普通帧执行的, 支持: 协程嵌套, WaitForSeconds, WaitForFixedProcess /// - public long StartCoroutine(IEnumerable able) + public long StartCoroutine(IEnumerator able) { if (_coroutineList == null) { _coroutineList = new List(); } - var data = new CoroutineData(able.GetEnumerator()); + var data = new CoroutineData(able); _coroutineList.Add(data); return data.Id; } + + /// + /// 开启一个协程, 返回协程 id, 协程是在普通帧执行的, 支持: 协程嵌套, WaitForSeconds, WaitForFixedProcess + /// + public long StartCoroutine(IEnumerable able) + { + return StartCoroutine(able.GetEnumerator()); + } /// /// 根据协程 id 停止协程