public int SystemInt32(XLua.LuaTable self, object field) { #if THREAD_SAFT || HOTFIX_ENABLE lock (luaEnv.luaEnvLock) { #endif RealStatePtr L = luaEnv.L; int err_func = LuaAPI.load_error_func(L, errorFuncRef); ObjectTranslator translator = luaEnv.translator; LuaAPI.lua_getref(L, luaReference); translator.Push(L, self); translator.PushAny(L, field); int __gen_error = LuaAPI.lua_pcall(L, 2, 1, err_func); if (__gen_error != 0) { luaEnv.ThrowExceptionFromError(err_func - 1); } int __gen_ret = LuaAPI.xlua_tointeger(L, err_func + 1); LuaAPI.lua_settop(L, err_func - 1); return(__gen_ret); #if THREAD_SAFT || HOTFIX_ENABLE } #endif }
/// <summary> /// 获取指定角色id的指定范围内的离玩家最近的怪物 /// </summary> /// <param name="actorId"></param> /// <returns></returns> public static Actor GetNearestMonsterByActorIds(XLua.LuaTable actorIds, float range) { float minDistance = float.MaxValue; Actor nearestMonster = null; Actor localPlayer = Game.Instance.GetLocalPlayer(); float sqrRange = range * range; if (localPlayer != null && actorIds != null) { List <uint> actorIdList = XLua.XUtils.CreateListByLuaTable <uint, uint>(actorIds); Vector3 localPlayerPos = localPlayer.Trans.position; foreach (Actor monster in ActorManager.Instance.MonsterSet.Values) { if (monster != null && actorIdList.Contains(monster.TypeIdx)) { float distance = (localPlayerPos - monster.Trans.position).sqrMagnitude; if (distance < sqrRange && distance < minDistance) { minDistance = distance; nearestMonster = monster; } } } } return(nearestMonster); }
public static void addLuaEventListener(XLua.LuaTable scriptEnv, string priex = "do") { IEnumerator it = scriptEnv.GetKeys().GetEnumerator(); try { while (it.MoveNext()) { object f = scriptEnv.Get <object>(it.Current.ToString()); if (f != null && f.GetType() == typeof(XLua.LuaFunction)) { if (it.Current.ToString().StartsWith(priex)) { int name = int.Parse(it.Current.ToString().Substring(priex.Length)); Node node = new Node(); node.parent = null; node.method = null; //unityAction3 unityFunction; //scriptEnv.Get(it.Current.ToString(), out node.action); node.action = scriptEnv.Get <XLua.LuaFunction>(it.Current.ToString()); if (!dict.ContainsKey(name)) { dict.Add(name, node); Logger.wanr(it.Current, "Lua 事件注册成功"); } else { Logger.wanr("Lua方法注册 失败: " + name); } } } } } catch (Exception e) { Logger.wanr("Lua事件注册时出错"); Logger.wanr(e.Message); } }
public XLua.LuaTable __Gen_Delegate_Imp33(object p0) { #if THREAD_SAFE || HOTFIX_ENABLE lock (luaEnv.luaEnvLock) { #endif RealStatePtr L = luaEnv.rawL; int err_func = LuaAPI.load_error_func(L, errorFuncRef); ObjectTranslator translator = luaEnv.translator; LuaAPI.lua_getref(L, luaReference); translator.PushAny(L, p0); int __gen_error = LuaAPI.lua_pcall(L, 1, 1, err_func); if (__gen_error != 0) { luaEnv.ThrowExceptionFromError(err_func - 1); } XLua.LuaTable __gen_ret = (XLua.LuaTable)translator.GetObject(L, err_func + 1, typeof(XLua.LuaTable)); LuaAPI.lua_settop(L, err_func - 1); return(__gen_ret); #if THREAD_SAFE || HOTFIX_ENABLE } #endif }
public void __Gen_Delegate_Imp1(XLua.LuaTable p0, float p1) { #if THREAD_SAFE || HOTFIX_ENABLE lock (luaEnv.luaEnvLock) { #endif RealStatePtr L = luaEnv.rawL; int err_func = LuaAPI.load_error_func(L, errorFuncRef); ObjectTranslator translator = luaEnv.translator; LuaAPI.lua_getref(L, luaReference); translator.Push(L, p0); LuaAPI.lua_pushnumber(L, p1); int __gen_error = LuaAPI.lua_pcall(L, 2, 0, err_func); if (__gen_error != 0) { luaEnv.ThrowExceptionFromError(err_func - 1); } LuaAPI.lua_settop(L, err_func - 1); #if THREAD_SAFE || HOTFIX_ENABLE } #endif }
//添加方法 public static void addEventLinstener(XLua.LuaTable scriptEnv, string priex = "do") { IEnumerator it = scriptEnv.GetKeys().GetEnumerator(); try { while (it.MoveNext()) { object f = scriptEnv.Get <object>(it.Current.ToString()); if (f != null && f.GetType() == typeof(XLua.LuaFunction)) { if (it.Current.ToString().StartsWith(priex)) { int name = int.Parse(it.Current.ToString().Substring(priex.Length)); unityAction3 unityFunction; scriptEnv.Get(it.Current.ToString(), out unityFunction); if (!isLinsteners(name)) { funcs.Add(name, unityFunction); } Logger.wanr(it.Current, "Lua 事件注册成功"); } } } } catch (Exception e) { Logger.wanr("Lua事件注册时出错"); Logger.wanr(e.Message); } }
public XLua.LuaTable XLuaLuaTable(object self, int a, int b) { #if THREAD_SAFT || HOTFIX_ENABLE lock (luaEnv.luaEnvLock) { #endif RealStatePtr L = luaEnv.L; int err_func = LuaAPI.load_error_func(L, errorFuncRef); ObjectTranslator translator = luaEnv.translator; LuaAPI.lua_getref(L, luaReference); translator.PushAny(L, self); LuaAPI.xlua_pushinteger(L, a); LuaAPI.xlua_pushinteger(L, b); int __gen_error = LuaAPI.lua_pcall(L, 3, 1, err_func); if (__gen_error != 0) { luaEnv.ThrowExceptionFromError(err_func - 1); } XLua.LuaTable __gen_ret = (XLua.LuaTable)translator.GetObject(L, err_func + 1, typeof(XLua.LuaTable)); LuaAPI.lua_settop(L, err_func - 1); return(__gen_ret); #if THREAD_SAFT || HOTFIX_ENABLE } #endif }
public void __Gen_Delegate_Imp3(XLua.LuaTable p0, System.Collections.Generic.List <UnityEngine.AssetBundle> p1) { #if THREAD_SAFE || HOTFIX_ENABLE lock (luaEnv.luaEnvLock) { #endif RealStatePtr L = luaEnv.rawL; int err_func = LuaAPI.load_error_func(L, errorFuncRef); ObjectTranslator translator = luaEnv.translator; LuaAPI.lua_getref(L, luaReference); translator.Push(L, p0); translator.Push(L, p1); int __gen_error = LuaAPI.lua_pcall(L, 2, 0, err_func); if (__gen_error != 0) { luaEnv.ThrowExceptionFromError(err_func - 1); } LuaAPI.lua_settop(L, err_func - 1); #if THREAD_SAFE || HOTFIX_ENABLE } #endif }
public int __Gen_Delegate_Imp23(XLua.LuaTable p0) { #if THREAD_SAFT || HOTFIX_ENABLE lock (luaEnv.luaEnvLock) { #endif RealStatePtr L = luaEnv.rawL; int err_func = LuaAPI.load_error_func(L, errorFuncRef); ObjectTranslator translator = luaEnv.translator; LuaAPI.lua_getref(L, luaReference); translator.Push(L, p0); int __gen_error = LuaAPI.lua_pcall(L, 1, 1, err_func); if (__gen_error != 0) { luaEnv.ThrowExceptionFromError(err_func - 1); } int __gen_ret = LuaAPI.xlua_tointeger(L, err_func + 1); LuaAPI.lua_settop(L, err_func - 1); return(__gen_ret); #if THREAD_SAFT || HOTFIX_ENABLE } #endif }
public void __Gen_Delegate_Imp2(XLua.LuaTable p0, UnityEngine.GameObject p1, UnityEngine.Vector2 p2) { #if THREAD_SAFT || HOTFIX_ENABLE lock (luaEnv.luaEnvLock) { #endif RealStatePtr L = luaEnv.rawL; int err_func = LuaAPI.load_error_func(L, errorFuncRef); ObjectTranslator translator = luaEnv.translator; LuaAPI.lua_getref(L, luaReference); translator.Push(L, p0); translator.Push(L, p1); translator.PushUnityEngineVector2(L, p2); int __gen_error = LuaAPI.lua_pcall(L, 3, 0, err_func); if (__gen_error != 0) { luaEnv.ThrowExceptionFromError(err_func - 1); } LuaAPI.lua_settop(L, err_func - 1); #if THREAD_SAFT || HOTFIX_ENABLE } #endif }
public void SystemVoid(XLua.LuaTable self) { #if THREAD_SAFT || HOTFIX_ENABLE lock (luaEnv.luaEnvLock) { #endif RealStatePtr L = luaEnv.L; int err_func = LuaAPI.load_error_func(L, errorFuncRef); ObjectTranslator translator = luaEnv.translator; LuaAPI.lua_getref(L, luaReference); translator.Push(L, self); int __gen_error = LuaAPI.lua_pcall(L, 1, 0, err_func); if (__gen_error != 0) { luaEnv.ThrowExceptionFromError(err_func - 1); } LuaAPI.lua_settop(L, err_func - 1); #if THREAD_SAFT || HOTFIX_ENABLE } #endif }
public object[] DoFile(string filename, string chunkName = "chunk", XLua.LuaTable env = null) { if (null == m_luaVM) { return(null); } return(m_luaVM.DoString("require '" + filename + "'", chunkName, env)); }
public static XLua.LuaTable LoadMap(string mapName, Action callback = null) { XLua.LuaTable table = (XLua.LuaTable)XLuaManager.OperationTablePool.Alloc(); table.Set("IsDone", false); table.Set("proess", 0); LoadMapInternal(table, mapName, callback); return(table); }
public static Goods CreateWeddingRingByIdInfo(uint idInfo, XLua.LuaTable mateInfo) { if (idInfo <= 0) { return(null); } return(new GoodsWeddingRing(idInfo, mateInfo)); }
/// <summary> /// 关闭UI的附带参数 Lua table /// </summary> /// <param name="table"></param> public void OnUICloseMessage_LuaTable(XLua.LuaTable table) { var luabehaviour = gameObject.GetComponent <Lua.LuaBehaviour>(); if (luabehaviour != null) { luabehaviour.OnUICloseMessage_LuaTable(table); } }
public void CloseUIWithLuaParam(int ui_id, XLua.LuaTable luaParam) { if (IsAdvanced) { m_UIMgr_Adv.CloseUI(ui_id, LuaParam: luaParam); } else { XLog.PrintW("[TinaX][UIKit]当前UI系统不是高级模式,但被尝试用高级模式的 ID 形式操作UI"); return; } }
private static async Task LuaLoadUIInternerl(XLua.LuaTable table, UIConfig info) { GameObject result = await Addressables.InstantiateAsync(info.Path).Task; Canvas canvas = result.GetComponent <Canvas>(); canvas.worldCamera = Camera.main; table.Set("Result", result.GetComponent <UIView>().GetUIView()); table.Set("IsDone", true); table.Set("proess", 1); TimeManager.DelayRecycle(table, 1); }
public IUIEntity OpenUIByPathWhitLuaParam(string ui_path, XLua.LuaTable lua_param, bool use_mask, bool close_by_mask = false) { if (IsAdvanced) { //高级模式 return(m_UIMgr_Adv.OpenUIByPath(ui_path, use_mask, close_by_mask, LuaParam: lua_param)); } else { return(m_UIMgr_Normal.OpenUIByPath(ui_path, use_mask, close_by_mask, LuaParam: lua_param)); } }
public void CloseUI(string ui_name, System.Object close_param = null, XLua.LuaTable LuaParam = null) { var uiPath = mGateway.UIKit_DefaultUIGroup.GetPathByName(ui_name); if (uiPath.IsNullOrEmpty()) { XLog.PrintE("[TinaX][UIKit]关闭UI失败,无法通过UI名:" + ui_name + " 获取到对应的UI路径"); return; } PCloseUI(uiPath, close_param: close_param, lua_close_param: LuaParam); }
public void LoadLuaString(bool isAssetBundle, string dirType, string scriptName, string scriptPath) { #if HOTFIX_ENABLE scriptEnv = UIManager.luaenv.NewTable(); XLua.LuaTable meta = UIManager.luaenv.NewTable(); meta.Set("__index", UIManager.luaenv.Global); scriptEnv.SetMetaTable(meta); meta.Dispose(); scriptEnv.Set("self", this); if (dirType == "Resources") { TextAsset luaStr = Resources.Load <TextAsset>(scriptPath); if (luaStr != null) { UIManager.luaenv.DoString(luaStr.text, "LuaUIBehaviour", scriptEnv); } else { Debug.Log(scriptPath + "is null!"); } } else if (dirType == "streamingAssetsPath") { #if UNITY_ANDROID && !UNITY_EDITOR string str = UIFactory.GetAndoidStreamingAssetLuaScripts(scriptName); if (!string.IsNullOrEmpty(str)) { UIManager.luaenv.DoString(str, "LuaUIBehaviour", scriptEnv); } else { Debug.Log(scriptPath + "is null!"); } #else LoadLuaScript(isAssetBundle, dirType, scriptName, scriptPath); #endif } else { LoadLuaScript(isAssetBundle, dirType, scriptName, scriptPath); } scriptEnv.Get("uiFormType", out _luaUiFormType); scriptEnv.Get("OnInit", out luaOnInit); scriptEnv.Get("OnExcute", out luaOnExcute); scriptEnv.Get("OnDisplay", out luaOnDisplay); scriptEnv.Get("OnHide", out luaOnHide); scriptEnv.Get("OnReDisplay", out luaOnReDisplay); scriptEnv.Get("OnFreese", out luaOnFreese); scriptEnv.Get("OnRelease", out luaOnRelease); #endif }
public void CloseUIByPathWithLuaParam(string ui_path, XLua.LuaTable luaParam) { if (IsAdvanced) { //高级模式下,不可用UI名关闭UI XLog.PrintW("[TinaX][UIKit]当前UI系统为高级模式,不可使用UI名称操作UI, 请使用UI实例的句柄ID"); return; } else { m_UIMgr_Normal.CloseUIByPath(ui_path, LuaParam: luaParam); } }
public void SendMessage(XLua.LuaTable message) { if (!this.IsConnect) { UnityEngine.Debug.LogError("SendMessage this.IsConnect == False"); return; } lock (m_sendMessages) { var luaMessage = new FastNet.LocalMessage(message); m_sendMessages.Enqueue(luaMessage); } }
/// <summary> /// 创于预览角色(使用luatable的接口) /// </summary> /// <param name="type_id"></param> /// <param name="uid"></param> /// <param name="modIdLst"></param> /// <param name="fashions"></param> /// <param name="suit_effects"></param> /// <param name="cbResLoad"></param> /// <param name="no_show_parts">不允许显示的模型部位列表(lua table)</param> /// <returns></returns> public static UnitID CreateClientModelForLua(uint type_id, uint uid, XLua.LuaTable modIdLst, XLua.LuaTable fashions, XLua.LuaTable suit_effects, Action <Actor> cbResLoad = null, XLua.LuaTable no_show_parts = null, bool is_ui_model = true, bool updateWithRawActor = true) { List <uint> model_id_list = XLua.XUtils.CreateListByLuaTable <uint, uint>(modIdLst); List <uint> fashions_list = XLua.XUtils.CreateListByLuaTable <uint, uint>(fashions); List <uint> suit_effects_list = XLua.XUtils.CreateListByLuaTable <uint, uint>(suit_effects); List <xc.DBAvatarPart.BODY_PART> no_show_parts_list = null; if (no_show_parts != null) { no_show_parts_list = XLua.XUtils.CreateListByLuaTable <uint, xc.DBAvatarPart.BODY_PART>(no_show_parts); } return(CreateClientModelForLua(type_id, uid, model_id_list, fashions_list, suit_effects_list, cbResLoad, no_show_parts_list, is_ui_model, updateWithRawActor)); }
static void GenProtocol() { LuaManager luaMgr = new LuaManager(); Action <string, string> gen = null; XLua.LuaTable protocol = null; try { luaMgr.Init(); luaMgr.AddSearchPath(EditorConst.EditorDir); luaMgr.AddSearchPath(EditorConst.ScriptDir); protocol = luaMgr.GetTable("Protocol"); List <string> files = new List <string>(Directory.GetFiles(c2s_dir)); files.Add(notice_file); StringBuilder des = new StringBuilder(); for (int i = 0; i < files.Count; i++) { string content = File.ReadAllText(files[i]); des.AppendFormat("{0}\n", content); } string rawProto = File.ReadAllText(protoc_file); string desString = string.Format("return [[\n{0}]]", des.ToString()); gen = protocol.Get <Action <string, string> >("GenProtocol"); gen(desString, rawProto); gen = null; string messageString = protocol.Get <Func <string> >("GetMessageString")(); string protoString = protocol.Get <Func <string> >("GetProtoString")(); string dir = EditorConst.ScriptDir + "/Protocol/"; File.WriteAllText(dir + "Descriptor.lua", desString); File.WriteAllText(dir + "Protocol.lua", protoString); File.WriteAllText(dir + "Message.lua", messageString); } catch (Exception e) { Debug.LogErrorFormat("{0}\n{1}", e.Message, e.StackTrace); } finally { protocol.Dispose(); protocol = null; luaMgr.Dispose(); } }
public static XLua.LuaTable LuaLoadUI(int id) { UIConfig uIConfig = UIConfigAsset.Get(id); if (uIConfig != null) { XLua.LuaTable table = (XLua.LuaTable)XLuaManager.OperationTablePool.Alloc(); table.Set("IsDone", false); table.Set("proess", 0); LuaLoadUIInternerl(table, uIConfig); return(table); } else { throw new Exception($"招不到UI路径{id}"); } }
public GoodsWeddingRing(uint idInfo, XLua.LuaTable mateInfo) { mIdInfo = idInfo; mMateInfo = mateInfo; CreateGoodsByTypeId(DBData.gid); if (normal_attrs == null) { normal_attrs = new ActorAttribute(); } else { normal_attrs.Clear(); } if (DBData != null) { List <DBTextResource.DBAttrItem> list = DBData.normal_attrs; for (int i = 0; i < list.Count; i++) { normal_attrs.Add(list[i].attr_id, list[i].attr_num); } } if (couple_attrs == null) { couple_attrs = new ActorAttribute(); } else { couple_attrs.Clear(); } if (DBData != null) { List <DBTextResource.DBAttrItem> list = DBData.couple_attrs; for (int i = 0; i < list.Count; i++) { couple_attrs.Add(list[i].attr_id, list[i].attr_num); } } }
public void __Gen_Delegate_Imp0(XLua.LuaTable p0) { #if THREAD_SAFE || HOTFIX_ENABLE lock (luaEnv.luaEnvLock) { #endif RealStatePtr L = luaEnv.rawL; int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference); ObjectTranslator translator = luaEnv.translator; translator.Push(L, p0); PCall(L, 1, 0, errFunc); LuaAPI.lua_settop(L, errFunc - 1); #if THREAD_SAFE || HOTFIX_ENABLE } #endif }
public void __Gen_Delegate_Imp3(XLua.LuaTable p0, System.Collections.Generic.List <UnityEngine.AssetBundle> p1) { #if THREAD_SAFE || HOTFIX_ENABLE lock (luaEnv.luaEnvLock) { #endif RealStatePtr L = luaEnv.rawL; int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference); ObjectTranslator translator = luaEnv.translator; translator.Push(L, p0); translator.Push(L, p1); PCall(L, 2, 0, errFunc); LuaAPI.lua_settop(L, errFunc - 1); #if THREAD_SAFE || HOTFIX_ENABLE } #endif }
public XLua.LuaTable __Gen_Delegate_Imp2(string p0) { #if THREAD_SAFE || HOTFIX_ENABLE lock (luaEnv.luaEnvLock) { #endif RealStatePtr L = luaEnv.rawL; int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference); ObjectTranslator translator = luaEnv.translator; LuaAPI.lua_pushstring(L, p0); PCall(L, 1, 1, errFunc); XLua.LuaTable __gen_ret = (XLua.LuaTable)translator.GetObject(L, errFunc + 1, typeof(XLua.LuaTable)); LuaAPI.lua_settop(L, errFunc - 1); return(__gen_ret); #if THREAD_SAFE || HOTFIX_ENABLE } #endif }
public void __Gen_Delegate_Imp15(UnityEngine.GameObject p0, XLua.LuaTable p1, UnityEngine.CanvasGroup p2) { #if THREAD_SAFE || HOTFIX_ENABLE lock (luaEnv.luaEnvLock) { #endif RealStatePtr L = luaEnv.rawL; int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference); ObjectTranslator translator = luaEnv.translator; translator.Push(L, p0); translator.Push(L, p1); translator.Push(L, p2); PCall(L, 3, 0, errFunc); LuaAPI.lua_settop(L, errFunc - 1); #if THREAD_SAFE || HOTFIX_ENABLE } #endif }