Ulua_toLua_基本案例(五)_LuaCoroutine



TestCoroutine:

using UnityEngine;
using System;
using System.Collections;
using LuaInterface;

public class TestCoroutine : MonoBehaviour 
{
    public TextAsset luaFile = null;
    private LuaState lua = null;
    private LuaFunction update = null;
    private LuaFunction lateupdate = null;
    private LuaFunction fixedupdate = null;

	void Awake () 
    {        
        lua  = new LuaState();
        lua.Start();
        LuaBinder.Bind(lua);

        lua.DoString(luaFile.text, "LuaCoroutine.lua");
        update = lua.GetFunction("Update");
        lateupdate = lua.GetFunction("LateUpdate");
        fixedupdate = lua.GetFunction("FixedUpdate");                
        LuaFunction f = lua.GetFunction("TestCortinue");
        f.Call();
        f.Dispose();
        f = null;
	}

    void OnDestroy()
    {
        update.Dispose();
        lateupdate.Dispose();
        fixedupdate.Dispose();
        lua.Dispose();
    }
	
	// Update is called once per frame
	void Update () 
    {
        
        update.BeginPCall(TracePCall.Ignore);
        update.Push(Time.deltaTime);
        update.Push(Time.unscaledDeltaTime);
        update.PCall();
        update.EndPCall();

        lua.CheckTop();
	}

    void LateUpdate()
    {
        lateupdate.BeginPCall(TracePCall.Ignore);
        lateupdate.PCall();
        lateupdate.EndPCall();
    }

    void FixedUpdate()
    {
        fixedupdate.BeginPCall(TracePCall.Ignore);
        fixedupdate.Push(Time.fixedDeltaTime);
        fixedupdate.PCall();
        fixedupdate.EndPCall();        
    }
}

LuaCoroutine.lua.bytes。

function fib(n)
    local a, b = 0, 1
    while n > 0 do
        a, b = b, a + b
        n = n - 1
    end

    return a
end

function CoFunc()
    print('Coroutine started')
    local i = 0
    for i = 0, 10, 1 do
        print(fib(i))                    
        coroutine.wait(1)						
    end
	
	local www = UnityEngine.WWW("http://www.baidu.com")
	coroutine.www(www)
	local s = tolua.tolstring(www.bytes)
	print(s:sub(1, 128))
    print('Coroutine ended')
end

function TestCortinue()	
    coroutine.start(CoFunc)
end

function Update(deltaTime)	
	Time:SetDeltaTime(deltaTime, 0)
	UpdateBeat()
end

function LateUpdate(deltaTime)	
	LateUpdateBeat()
	CoUpdateBeat()	
	Time:SetFrameCount()
end

function FixedUpdate(fixedTime)	
	Time:SetFixedDelta(fixedTime)
	FixedUpdateBeat()
end


你可能感兴趣的:(unity,lua)