Lua中require

一、require的作用

require是用来加载指定的模块的,如果这个模块之前加载过,并且在package.loaded表里面有,就不会重新加载模块,会直接返回package.loaded表里面的值。如果package.loaded表里面没有值,就会把这个模块中的全局变量和全局函数都加入到_G中,并且在package.loaded里面增加一个键值对{key=“test”, value=true}。如果模块有返回值的话,value就是返回值。
例如:
test.lua

	function test_func()
		print("hello package")
	end
	var = 1000

require(“test”),就会把test_func函数和var变量加入到**_G**中,并且在package.loaded[“test”] = true。

二、指定require的加载路径

// 指定需要加载的lua文件路径
// 如果存在LUA_PATH环境变量,就用LUA_PATH环境变量的值作为默认值
package.path = package.path ... ';xxx/?.lua'

//指定需要加载的C的库文件路径
// 如果存在LUA_CPATH环境变量,就用LUA_CPATH环境变量的值作为默认值
package.cpath = package.cpath ... ';xxx/?.so'

三、require在热更中的作用

用伪代码展示一个热更的解决方案

//这个全局的md5文件表需要放在一个不用热更的模块里面(增加一个static.lua,放入其中)
global_file_md5 = {}

//指定需要热更的动态文件
local dynamic_file = 
{
	"item",
	"monster",
}

for _, file in ipairs(dynamic_file) do
	//计算出模块文件的md5值
	local file_md5 = md5(file)
	//如果模块文件是新增的或者模块文件的md5值变化了,则需要重新加载这个模块
	if 	not global_file_md5[file] or 	global_file_md5[file] ~= file_md5 then
		//需要把package.loaded表里面的模块置空,要不然require会直接返回
		package.loaded[file] = nil
		//重新加载模块
		require(file)
	end
end
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值