一、dofile
格式:
dofile("绝对路径名")
dofile会加载绝对路径中的lua文件,并且执行。
--aa.lua文件
print("aaaaaaaaaaaaaaaaaaa")
--test.lua文件
dofile("D:\\MyGame\\firstgame\\src\\app\\scenes\\aa.lua")
输出结果:
可以看到成功加载并且同时执行加载的lua文件。
二、loadfile
格式:
loadfile("绝对路径名")
loadfile只会加载lua文件,并不执行,可以返回给一个function类型,然后再想调用的时候再调用赋给的那个函数就可以了。
--test.lua文件
fun = loadfile("D:\\MyGame\\firstgame\\src\\app\\scenes\\aa.lua")
fun()
输出结果:
dofile是加载并执行,loadfile只加载不执行,两者有个共性就是加载的lua文件必须是绝对路径,否则报错。
三、loadstring
格式:
loadstring("代码")
loadstring个loadfile类似,也只负责加载,并不执行,同样可以返回给一个函数,让这个函数去执行。
--test.lua文件
fun = loadstring("local a = 10; return a + 20")
num = fun()
print(num)
输出结果:
loadstring主要用于更新游戏,可以从服务器直接把一段代码导入到loadstring中,通过loadstring加载,直接更新,而不用对游戏重新打包了。
四、require
格式:
require("相对路径名")
require和dofile类似,加载并执行,但其路径名必须是相对路径,由于其他文件中已经给定了当前的绝对路径,比如我的已经指定到了src这个绝对路径下,同时这里的相对路径是以“.”分割的,并且最后的lua文件不带文件后缀名。
因为require最大的好处就是可以搜索目录,并且会检查该文件是否重复加载,所以require是最常用的加载方式。
--test.lua文件
require("app.scenes.aa")
输出结果:
同样可以在要加载的文件中写入一个函数:
--aa.lua文件
function fun(a, b)
return a * b
end
--test.lua文件
require("app.scenes.aa")
num = fun(3, 5)
print(num)
输出结果:
小结:
稍微总结一下这四种加载形式的异同