// @desc このスクリプトが動いているMonoBehaviourが貼り付いているGameObjectを取得する // @decl GameObject current() // @result GameObject // @sample local g = GameObject.current() private static int L_current(ILuaState lua) { LuaScriptBehaviour lsb = LuaScriptBehaviour.FindFromState(lua); GameObject obj = lsb.gameObject; PushNew(lua, obj); return(1); }
// @desc スレッドを開始する // @param function スレッドで実行する関数 // @result スレッドインスタンス // @sample local th = lthread.start(function() print("HOGE") end) private static int L_lthread_start(ILuaState lua) { LuaScriptBehaviour lsb = LuaScriptBehaviour.FindFromState(lua); LuaThread th = lsb.StartThread(lua); NewLuaThread(lua, th); return(1); }
// @class util // @obsolete // @desc timeout // @decl (time, func) // @param time 遅延させる時間(秒) // @param func 関数 // @sample util.timeout(5, function() print("5sec") end) private static int L_timeout(ILuaState lua) { double time = lua.ToNumber(1); LuaScriptBehaviour lsb = LuaScriptBehaviour.FindFromState(lua); Element e = new Element(); e._fid = lsb.ExportAnonymousFunction(lua); e._time = (float)time; e._lua = lua; _instance._timeouts.Add(e); return(0); }
public void Update() { for (int i = 0; i < _timeouts.Count; ++i) { Element e = _timeouts[i]; e._time -= Time.deltaTime; if (e._time <= 0.0f) { LuaScriptBehaviour lsb = LuaScriptBehaviour.FindFromState(e._lua); lsb.InvokeAnonymousFunction(e._lua, e._fid, 0, 0); } } _timeouts.RemoveAll(e => e._time <= 0.0f); }