implement unity StartCoroutine - sonygod/luaxe-nlua GitHub Wiki
it's very easy use :
update:
there no need to add extra method in TypeCheck.hx anymore,just add an extra class
same define as
LuaMonoBehavior.cs
package unityHelper;
import unityengine.*;
/**
* LuaMonoBehaviour
* @author sonygod
*
* same function as LuaMonoBehaviour.cs
*/
extern class LuaMonoBehaviour extends MonoBehaviour
{
public function new():Void;
public function StopLuaCoroutine():Void;
public function LuaDestoryFunction():Void;
public function callLua(func:Dynamic):Void;
public function UnityCoroutine(ins:YieldInstruction , func:Dynamic ):Void;
}
here is example code.
package ;
import luaxe.Lua;
import unityengine.*;
using Reflect;
using unityHelper.TypeCheck;
class Main
{
public static var mMain:Main;
public var current:LuaMonoBehaviour;
public function new() {
untyped __call__(SetMain, this);
}
@:keep function Awake() {
current.callLua(delay);
// current.SetTimeout(delay, 2);
current.LuaDestoryFunction();
current.StopLuaCoroutine();
current.StopAllCoroutines();
current.UnityCoroutine(new WaitForSeconds(2), delay);
}
@:keep public function delay() {
trace("delay10 " );
}
public static function main()
{
mMain = new Main();
}
}
and the LuaMono file add these two method note:not static
public void UnityCoroutine(YieldInstruction ins, LuaFunction func)
{
StartCoroutine(doCoroutine(ins, func));
}
private IEnumerator doCoroutine(YieldInstruction ins, LuaFunction func)
{
yield return ins;
func.Call();
}