Cocos2d-Lua之Lua文件的加载与运行

一、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)

输出结果:

这里写图片描述

小结:

稍微总结一下这四种加载形式的异同

Cocos2d-Lua之Lua文件的加载与运行_第1张图片

你可能感兴趣的:(Cocos2dLua)