当前位置: 首页 > news >正文

Lua学习记录 - 自定义模块管理器

      为人所知的是lua自带的require函数加载脚本只会加载一次(就像unity里面的资源管理和AB包管理),而主播调试习惯是用Odin插件的Button在unity编辑器模式里调试而非进入播放模式后调试,今天主播在做热更新相关的时候企图多次调用脚本打印以调试功能,而有时候有些模块需要反复加载,因而主播随便写了个模块管理器。不到好不好用,主要是其一键卸载所有模块好用。


if TDKLuaTookit==nil then
TDKLuaTookit={}
end
TDKLuaTookit.TDKTookit={}
TDKLuaTookit.TDKTookit.__index=TDKLuaTookit.TDKTookit
TDKLuaTookit.TDKTookit.__newindex=TDKLuaTookit.TDKTookit
TDKTookit={}
setmetatable(TDKTookit,TDKLuaTookit.TDKTookit)
TDKTookit.FileDic={}
--本来想用usenamespace的,想想这玩意是能卸载的,还是叫模块比较合适哈--加载模块
function loadModule(name)if TDKTookit.FileDic[name] then-- 已经加载过,直接返回缓存return TDKTookit.FileDic[name]endlocal ok, result = pcall(require, name)if not ok thenerror("加载模块失败: " .. tostring(result))endTDKTookit.FileDic[name] = resultreturn result
end
--卸载模块
function unloadModule(name)TDKTookit.FileDic[name] = nilpackage.loaded[name] = nil
end
--重载模块
function reloadModule(name)TDKTookit.unloadModule(name)return TDKTookit.loadModule(name)
end
--列出模块
function listModules(boolPrint)if(boolPrint) thenprint("当前已加载的自定义模块:")for k, v in pairs(TDKTookit.FileDic) doprint(" - " .. k)endendreturn TDKTookit.FileDic
end--卸载所有模块
function unloadAllModule()for k,v in pairs(TDKTookit.FileDic) doTDKTookit.unloadModule(k)end
end

http://www.dtcms.com/a/338490.html

相关文章:

  • Linux------《操作系统全景速览:Windows·macOS·Linux·Unix 对比及 Linux 发行版实战指南》
  • HiveQL | 个人学习笔记
  • JetBrains系列产品-IDEA/PyCharm/GoLand自动生成方法返回值的快捷键,查看方法参数的快捷键。
  • AI驱动的SEO关键词优化秘籍
  • MFC中使用EXCEL的方法之一
  • 数据迁移:如何从MySQL数据库高效迁移到Neo4j图形数据库
  • 迁移学习(Transfer Learning)
  • 当机器猫遇上具身智能:一款能读懂宠物心思的AI守护者
  • 分布式搜索(Elasticsearch)基本用法
  • kubeadm部署k8s集群环境搭建
  • Qt密码生成器项目开发教程 - 安全可靠的随机密码生成工具
  • QT聊天项目DAY19
  • 深入理解Prompt构建与工程技巧:API高效实践指南
  • 如何将Date类型的数据转换为LocalDateTime类型
  • 链表-2.两数相加-力扣(LeetCode)
  • 【C语言强化训练16天】--从基础到进阶的蜕变之旅:Day7
  • Java开发面试实战:Spring Boot微服务与数据库优化案例分析
  • 微服务如何集成swagger3
  • Leetcode70爬楼梯
  • CF思维训练回顾
  • 摄像头模块在运动相机中的应用
  • 【Linux】文件系统
  • 【基础-判断】用户在长视频、短视频、直播、通话、会议、拍摄类应用等场景下,可以采用悬停适配在折叠屏半折态时,上屏进行浏览下屏进行交互操作
  • 工业相机基本知识解读:像元、帧率、数据接口等
  • ABAP - 会计凭证行项目文本和抬头文本增强
  • ios使用saveVideoToPhotosAlbum 保存视频失败提示 invalid video
  • [Polly智能维护网络] 弹性管道 | 弹性管道构建器 | new | Add | .Build()
  • PIX2SEQ: A LANGUAGE MODELING FRAMEWORK FOR OBJECT DETECTION
  • MongoDB从入门到精通:
  • 【LeetCode】17. 电话号码的字母组合