lua 在unity 中的协程使用

来源:互联网 发布:pc端看图软件 编辑:程序博客网 时间:2024/04/24 21:30

最近尝试在unity中用上lua。

而其中会遇到的一个问题就是unity中普遍使用的协程在lua中如何实现。

最终经过考虑之后决定用lua的coroutine来实现。最终的使用与unity的协程类似。

下面是实现代码:

因为我没找到可以在lua中定时执行任务的方法,所以我在unity中定时会去调用lua的check方法

在unity c#中调用方式:

  在update中调用lua的CheckCoroutine函数

    void Update()
    {
        if(Time.frameCount%5== 0)
        {
            //Debug.Log(Time.realtimeSinceStartup+", "+Time.deltaTime);
            CallMethond("CheckCoroutine");
        }

        //CallMethond("Update");
    }



在lua中实际使用:

lua中例子函数定义:

co2 = coroutine.create(
function ()
    local a0;
    while true 
    do
        if a>3 then
            break
        end
    
        a=a+1;
        Print("co2:  "..a.." "..Time.realtimeSinceStartup);
        WaitSeconds(co21);
    end
    
    WaitSeconds(co21);
    Print("after wait:  "..a.." "..Time.realtimeSinceStartup);
    for i=13 do
        WaitSeconds(co21);
        Print("for:  "..a.." "..Time.realtimeSinceStartup);
    end
end
)

lua中函数调用:

      在需要调用的地方启动第一次函数,例如在Start函数调用:

function Start()
     coroutine.resume(co2);
end

    之后co2就会像在c#里面一样自动执行下去了。  

  

这样就可以像c#一样在lua中使用协程了:)


0 0