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