当前位置: 首页 > 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.xdnf.cn/news/1325305.html

相关文章:

  • 数据库:表和索引结构
  • 如何新建一个自己的虚拟环境
  • 实践笔记-小端模式下的寄存器数据输入技巧;图形化界面配置注意事项。
  • AI应用商业化加速落地 2025智能体爆发与端侧创新成增长引擎
  • 安装pnpm i -D @types/wechat-miniprogram报错,版本不匹配
  • 继承——Java中的“家族传承”
  • JavaSE高级-02
  • Read Frog:一款开源AI浏览器语言学习扩展
  • 网络基础——协议认识
  • 视觉语言导航(2)——VLN RNN TRANSFORMER 与ATTENTION 2.2+LSTM(单独一节)
  • 构建情感智能体:下一代AI心理助手的架构与实践
  • Lucene 8.5.0 的 `.pos` 文件**逻辑结构**
  • 基于JS实现的中国象棋AI系统:多模块协同决策与分析
  • leetcode4_452 and 763
  • 一道同分排名的SQL题
  • Django开发Web应用
  • Dubbo 的SPI
  • 15.三数之和
  • vue3 el-table-column 列头添加 图标按钮
  • 使用websockets中的一些问题和解决方法
  • day25|学习前端js
  • Day7--滑动窗口与双指针--1695. 删除子数组的最大得分,2958. 最多 K 个重复元素的最长子数组,2024. 考试的最大困扰度
  • JavaSE——高级篇
  • Java面试宝典:Redis 入门与应用
  • Poisson分布:稀有事件建模的理论基石与演进
  • 用随机森林填补缺失值:原理、实现与实战
  • 力扣hot100:移动零问题的巧妙解决:双指针与原地交换策略(283)
  • 开发避坑指南(28):Spring Boot端点检查禁用失效解决方案
  • Vue3 中使用 Element Plus 完整指南
  • Spring AI Alibaba 项目接入兼容 OpenAI API 的大模型