private IEnumerator ExecuteScriptInternal(string script) { var luaFunc = DynValue.Nil; try { luaFunc = LuaScript.DoString(script); } catch (InterpreterException ex) { Debug.LogErrorFormat("Lua Execute error:\n{0}", ex.DecoratedMessage); } catch (Exception ex) { Debug.LogException(ex); } if (luaFunc.IsNil()) { yield break; } luaCoroutine = null; var dynValue = LuaScript.CreateCoroutine(luaFunc); if (dynValue.IsNil()) { yield break; } luaCoroutine = dynValue.Coroutine; luaCoroutine.AutoYieldCounter = 1000; luaCoroutine.Resume(); while (true) { if (luaCoroutine == null) { break; } if (luaCoroutine.State == CoroutineState.Dead) { break; } yield return(null); } }