Ejemplo n.º 1
0
        // @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);
        }
Ejemplo n.º 2
0
        // @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);
        }
Ejemplo n.º 3
0
        // @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);
        }
Ejemplo n.º 4
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);
 }