public static void AddLuaFunctionDelegate(List <EventDelegate> list, XLua.LuaFunction func) { EventDelegate.Add(list, delegate() { func.Call(); }); }
// 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(); }
public static void OnClickSet(this Button button, object callback) { XLua.LuaFunction func = callback as XLua.LuaFunction; button.onClick.RemoveAllListeners(); button.onClick.AddListener( () => { func?.Call(); }); }
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(); }); }
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); }); }
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!")); }
/// <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); }
// 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]); }
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); } })); }
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); } }
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)); }
private IEnumerator DoCallNextFrame(XLua.LuaFunction fn) { yield return(0); fn.Call(); }
private IEnumerator DoDelayCall(float delay, XLua.LuaFunction fn) { yield return(new WaitForSeconds(delay)); fn.Call(); }
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; } }