private static int AddEvent(IntPtr L) { int result; try { ToLua.CheckArgsCount(L, 3); ThreadManager threadManager = (ThreadManager)ToLua.CheckObject(L, 1, typeof(ThreadManager)); ThreadEvent ev = (ThreadEvent)ToLua.CheckObject(L, 2, typeof(ThreadEvent)); LuaTypes luaTypes = LuaDLL.lua_type(L, 3); Action <NotiData> func; if (luaTypes != LuaTypes.LUA_TFUNCTION) { func = (Action <NotiData>)ToLua.CheckObject(L, 3, typeof(Action <NotiData>)); } else { LuaFunction func2 = ToLua.ToLuaFunction(L, 3); func = (DelegateFactory.CreateDelegate(typeof(Action <NotiData>), func2) as Action <NotiData>); } threadManager.AddEvent(ev, func); result = 0; } catch (Exception e) { result = LuaDLL.toluaL_exception(L, e, null); } return(result); }
static int AddEvent(IntPtr L) { try { ToLua.CheckArgsCount(L, 3); ThreadManager obj = (ThreadManager)ToLua.CheckObject(L, 1, typeof(ThreadManager)); ThreadEvent arg0 = (ThreadEvent)ToLua.CheckObject(L, 2, typeof(ThreadEvent)); System.Action <NotiData> arg1 = null; LuaTypes funcType3 = LuaDLL.lua_type(L, 3); if (funcType3 != LuaTypes.LUA_TFUNCTION) { arg1 = (System.Action <NotiData>)ToLua.CheckObject(L, 3, typeof(System.Action <NotiData>)); } else { LuaFunction func = ToLua.ToLuaFunction(L, 3); arg1 = DelegateFactory.CreateDelegate(typeof(System.Action <NotiData>), func) as System.Action <NotiData>; } obj.AddEvent(arg0, arg1); return(0); } catch (Exception e) { return(LuaDLL.toluaL_exception(L, e)); } }
/// <summary> /// 线程下载 /// </summary> void BeginDownload(string url, string file) { //线程下载 object[] param = new object[2] { url, file }; ThreadEvent ev = new ThreadEvent(); ev.Key = NotiConst.UPDATE_DOWNLOAD; ev.evParams.AddRange(param); ThreadManager.AddEvent(ev, OnThreadCompleted); //线程下载 }
private IEnumerator ExtractZipFile() { bool bNeedUnzip = false; string version = PlayerPrefs.GetString("Version"); if (version != AppConst.AppVersion) { bNeedUnzip = true; } if (bNeedUnzip == false) { Finish(); yield break; } string path = AppConst.ABZipPath; LogUtil.StartLog("Extract Zip File: " + path); UpdateTips("正在解压文件"); byte[] bytes = null; if (path.Contains("://")) { UnityWebRequest request = UnityWebRequest.Get(path); yield return(request.SendWebRequest()); if (request.isNetworkError || request.isHttpError) { LogUtil.StartLog("Failed To Load ab.zip File: " + path + "\n" + request.error); } else { bytes = request.downloadHandler.data; } } else if (File.Exists(path)) { bytes = File.ReadAllBytes(path); } if (bytes != null) { object[] param = new object[] { bytes, AppConst.CachePath }; ThreadEvent ev = new ThreadEvent(); ev.Key = NotiConst.EXTRACT_FILE; ev.evParams.AddRange(param); float progress = 0f; bool isFinish = false; ThreadManager threadManager = MainGame.GetManager <ThreadManager>(); threadManager.AddEvent(ev, (e) => { if (e.evName == NotiConst.EXTRACT_UPDATE) { progress = (float)e.evParam; } else if (e.evName == NotiConst.EXTRACT_FINISH) { isFinish = true; } }); //线程解压 while (!isFinish) { UpdateTips("正在解压文件", progress); yield return(new WaitForEndOfFrame()); } PlayerPrefs.SetString("Version", AppConst.AppVersion); Util.Log("Extract Zip File Finish."); UpdateTips("解压文件完成", 1); } else { Util.Log("Zip File Is Not Found."); UpdateTips("解压文件失败"); } }