tolua#的Examples-05_LuaCoroutine

关键代码:
void Awake ()
{        
        lua  = new LuaState();
        lua.Start();
        LuaBinder.Bind(lua);                
        looper = gameObject.AddComponent《LuaLooper》();
        looper.luaState = lua;

        lua.DoString(luaFile.text, "LuaCoroutine");
        LuaFunction f = lua.GetFunction("TestCortinue");
        f.Call();
        f.Dispose();
        f = null;
}

void OnGUI()
{
        if (GUI.Button(new Rect(50, 50, 120, 45), "Start Coroutine"))
        {            
            LuaFunction func = lua.GetFunction("StartDelay");
            func.Call();
            func.Dispose();
        }
        else if (GUI.Button(new Rect(50, 150, 120, 45), "Stop Coroutine"))
        {
            LuaFunction func = lua.GetFunction("StopDelay");
            func.Call();
            func.Dispose();
        }
}

这里没有看到lua代码,
关联的lua文件在\ToLua\Examples\Resources\Lua\TestLuaCoroutine.lua.bytes在里面可以看到很多代码:
local www = UnityEngine.WWW("http://www.baidu.com")
coroutine.www(www)

function TestCortinue()    
    coroutine.start(CoFunc)
end

function Delay()
    local c = 1

    while true do
        coroutine.wait(1)
        print("Count: "..c)
        c = c + 1
    end
end

function StopDelay()
    coroutine.stop(coDelay)
end

这里第一次用到luastate.Start()函数,因为这次需要wrap提供功能,因此必须启动它,里面比较关键是gameObject.AddComponent《LuaLooper》();添加了这个组件后,它会在c#每一帧驱动lua的协同完成所有的协同功能,这里的协同已经不单单是lua自身功能,而是tolua#模拟unity的所有的功能。

[本日志由 admin 于 2016-03-20 09:11 PM 更新]
上一篇: tolua#的Examples-04_AccessingLuaVariables
下一篇: tolua#的Examples-06_LuaCoroutine2
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
相关日志:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 邮件地址支持Gravatar头像,邮箱地址不会公开.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭