コード例 #1
0
 public static void AddLuaFunctionDelegate(List <EventDelegate> list, XLua.LuaFunction func)
 {
     EventDelegate.Add(list, delegate()
     {
         func.Call();
     });
 }
コード例 #2
0
    // Use this for initialization
    void Start()
    {
        int i = Random.Range(0, 10);

        Debug.Log(i);
        luaenv.DoString("CS.UnityEngine.Debug.Log('hello')");
        luaenv.DoString("print('lua hello world')");
        luaenv.DoString("require'main'");

        int a = luaenv.Global.Get <int>("a");

        Debug.Log(a);


        Table t = luaenv.Global.Get <Table>("t");

        Debug.Log(t.a);

        XLua.LuaFunction addfun = luaenv.Global.Get <XLua.LuaFunction>("addfun");
        object[]         c      = addfun.Call(1, 2);
        int cint = System.Convert.ToInt32(c[0]);

        Debug.Log(cint);

        XLua.LuaFunction update = luaenv.Global.Get <XLua.LuaFunction>("update");
        update.Call();
    }
コード例 #3
0
ファイル: UnityEX.cs プロジェクト: XSummerY/XLuaFrameWork
 public static void OnClickSet(this Button button, object callback)
 {
     XLua.LuaFunction func = callback as XLua.LuaFunction;
     button.onClick.RemoveAllListeners();
     button.onClick.AddListener(
         () =>
     {
         func?.Call();
     });
 }
コード例 #4
0
ファイル: UnityEX.cs プロジェクト: XSummerY/XLuaFrameWork
 public static void OnValueChangedSet(this Toggle toggle, object callback)
 {
     XLua.LuaFunction func = callback as XLua.LuaFunction;
     toggle.onValueChanged.RemoveAllListeners();
     toggle.onValueChanged.AddListener(
         (bool flag) =>
     {
         func?.Call();
     });
 }
コード例 #5
0
ファイル: UnityEX.cs プロジェクト: XSummerY/XLuaFrameWork
 public static void OnValueChangedSet(this Slider slider, object callback)
 {
     XLua.LuaFunction func = callback as XLua.LuaFunction;
     slider.onValueChanged.RemoveAllListeners();
     slider.onValueChanged.AddListener(
         (float value) =>
     {
         func?.Call(value);
     });
 }
コード例 #6
0
ファイル: XLuaLuaFunctionWrap.cs プロジェクト: x1766233/DCET
        static int _m_Call(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);


                XLua.LuaFunction gen_to_be_invoked = (XLua.LuaFunction)translator.FastGetCSObj(L, 1);


                int gen_param_count = LuaAPI.lua_gettop(L);

                if (gen_param_count >= 1 && (LuaTypes.LUA_TNONE == LuaAPI.lua_type(L, 2) || translator.Assignable <object>(L, 2)))
                {
                    object[] _args = translator.GetParams <object>(L, 2);

                    object[] gen_ret = gen_to_be_invoked.Call(_args);
                    translator.Push(L, gen_ret);



                    return(1);
                }
                if (gen_param_count == 3 && translator.Assignable <object[]>(L, 2) && translator.Assignable <System.Type[]>(L, 3))
                {
                    object[]      _args        = (object[])translator.GetObject(L, 2, typeof(object[]));
                    System.Type[] _returnTypes = (System.Type[])translator.GetObject(L, 3, typeof(System.Type[]));

                    object[] gen_ret = gen_to_be_invoked.Call(_args, _returnTypes);
                    translator.Push(L, gen_ret);



                    return(1);
                }
            } catch (System.Exception gen_e) {
                return(LuaAPI.luaL_error(L, "c# exception:" + gen_e));
            }

            return(LuaAPI.luaL_error(L, "invalid arguments to XLua.LuaFunction.Call!"));
        }
コード例 #7
0
ファイル: Game.cs プロジェクト: wuhuolong/MaxBooks
        /// <summary>
        /// 初始化游戏状态机
        /// </summary>
        /// <returns></returns>
        public xc.Machine.State InitFSM()
        {
            m_GameMachine = new xc.Machine();

            xc.Machine.State init_state = new xc.GameInitState(m_GameMachine);

            XLua.LuaFunction initFSMFunc = LuaScriptMgr.Instance.GetLuaFunction("Main_InitFSM");
            if (initFSMFunc != null)
            {
                initFSMFunc.Call(m_GameMachine, init_state);
            }

            m_GameMachine.SetCurState(init_state);
            return(init_state);
        }
コード例 #8
0
    // Start is called before the first frame update
    private void Start()
    {
        env = new LuaEnv();
        env.DoString("require 'CallLua'");
        XLua.LuaTable gl = env.Global.Get <XLua.LuaTable>("gameUser");

        Debug.Log("luatable---" + gl.Get <string>("name"));

        //函数
        XLua.LuaFunction fun = gl.Get <XLua.LuaFunction>("Speak");
        fun.Call();
        XLua.LuaFunction fun1     = gl.Get <XLua.LuaFunction>("Caculation");
        object[]         objarray = fun1.Call(gl, 2, 3);
        Debug.Log("result--" + objarray[0]);
    }
コード例 #9
0
ファイル: LuaHelp.cs プロジェクト: lingfan/lxl_cpp
 public static int SetImageSprite(Image image, string assetPath, XLua.LuaFunction onEnd, bool isSetSize)
 {
     return(ImageRefMonitorMono.Set(image, assetPath, (seq, refMono, i, s) => {
         if (seq == refMono.setOperaSeq)
         {
             i.sprite = s;
             if (isSetSize)
             {
                 i.SetNativeSize();
             }
         }
         if (null != onEnd)
         {
             onEnd.Call(seq, refMono, i, s);
         }
     }));
 }
コード例 #10
0
    public void CreatePanel(string className, XLua.LuaFunction func = null)
    {
        Debug.Log("C# CreatePanel: " + className);

        //AssetBundle.LoadAsset();
        GameObject prefab = Resources.Load <GameObject>("Prefabs/" + className);

        GameObject go = Instantiate(prefab) as GameObject;

        go.name                    = className;
        go.layer                   = LayerMask.NameToLayer("Default");
        go.transform.parent        = Parent;
        go.transform.localScale    = Vector3.one;
        go.transform.localPosition = Vector3.zero;

        go.AddComponent <XLuaTest.LuaAdapter>();

        if (func != null)
        {
            func.Call(go);
        }
    }
コード例 #11
0
 public object[] Call(string funcName, params object[] args)
 {
     XLua.LuaFunction f = mLuaModule.Get <string, XLua.LuaFunction>(funcName);
     if (f == null)
     {
         throw new XLua.LuaException("No lua function: " + funcName);
     }
     object[] allArgs;
     if (args == null)
     {
         allArgs = new object[1];
     }
     else
     {
         allArgs = new object[args.Length + 1];
         for (int i = 0; i < args.Length; i++)
         {
             allArgs[i + 1] = args[i];
         }
     }
     allArgs[0] = mLuaModule;
     return(f.Call(allArgs));
 }
コード例 #12
0
ファイル: LuaMgr.cs プロジェクト: BeCarefulPillar/naruto
    private IEnumerator DoCallNextFrame(XLua.LuaFunction fn)
    {
        yield return(0);

        fn.Call();
    }
コード例 #13
0
ファイル: LuaMgr.cs プロジェクト: BeCarefulPillar/naruto
    private IEnumerator DoDelayCall(float delay, XLua.LuaFunction fn)
    {
        yield return(new WaitForSeconds(delay));

        fn.Call();
    }
コード例 #14
0
        void OnInspectorGUI_Playing()
        {
            var currTarget = target as LuaTarget;

            if (currTarget == null || !currTarget.Valid)
            {
                EditorGUILayout.HelpBox("lua not initialized", MessageType.Warning);
                return;
            }

            EditorGUI.BeginDisabledGroup(false);

            int originTop = LuaAPI.lua_gettop(Utils.LuaL);

            LuaAPI.lua_getref(Utils.LuaL, currTarget.LuaReference);
            object value = Utils.ObjTranslator.GetObject(Utils.LuaL, -1, typeof(object));

            ShowInternalItem_Playing(string.Empty, string.Empty, value);

            LuaAPI.lua_settop(Utils.LuaL, originTop);

            EditorGUI.EndDisabledGroup();

            originTop = LuaAPI.lua_gettop(Utils.LuaL);

            object   evtVal       = null;
            LuaTypes evtValueType = LuaTypes.LUA_TNIL;

            currTarget.Table.Get <string, object>(LuaTarget.NameEvents, out evtVal, out evtValueType);
            if (evtValueType == LuaTypes.LUA_TTABLE)
            {
                var events = new List <string>();
                EditorGUILayout.BeginVertical("Box");

                LuaTable evtTable = evtVal as LuaTable;

                evtTable.ForEach <string, object>((key, val, type) =>
                {
                    if (type != LuaTypes.LUA_TFUNCTION)
                    {
                        return;
                    }

                    events.Add(key);
                });

                if (content != null)
                {
                    var eventsFieldIndex = GetFieldSourceIndex(content, LuaTarget.ArgsName);
                    var orderMap         = (eventsFieldIndex.Key == -1 || eventsFieldIndex.Value == -1) ? null : GetOrderedKey(events, content.Substring(eventsFieldIndex.Key, eventsFieldIndex.Value - eventsFieldIndex.Key - 1));

                    events = events.OrderBy(key => { int index; orderMap.TryGetValue(key, out index); return(index); }).ToList();
                }

                int methodNum = 0;
                EditorGUILayout.BeginHorizontal();
                bool invoked = false;

                foreach (var key in events)
                {
                    if (GUILayout.Button(key) && !invoked)
                    {
                        invoked = true;
                        LuaFunction func = null;

                        evtTable.Get <string, LuaFunction>(key, out func);
                        if (func != null)
                        {
                            func.Call(evtTable, editorMethodArgument);
                        }
                    }

                    methodNum++;
                    if (methodNum % maxMethodButtonPerRow == 0)
                    {
                        methodNum = 0;
                        EditorGUILayout.EndHorizontal();
                        EditorGUILayout.BeginHorizontal();
                    }
                }

                if (methodNum % maxMethodButtonPerRow != 0)
                {
                    EditorGUILayout.LabelField(string.Empty);
                }

                EditorGUILayout.EndHorizontal();

                editorMethodArgument = EditorGUILayout.TextField("Method Argument", editorMethodArgument);
                EditorGUILayout.EndVertical();
            }

            LuaAPI.lua_settop(Utils.LuaL, originTop);

            if (GUILayout.Button("Reload"))
            {
                currTarget.Reload();
                content = null;
            }
        }