Lua 中的模块功能
在用Lua
处理游戏中的UI界面时,一个UI界面对应一个Lua文件时,当这个UI界面处理的功能过多时,会导致一个lua文件中代码过多,这时可通过Lua中模块的功能来优化,直接使用require("model_name")来载入,载入的文件后缀是lua,也可以添加文件的路径,如require("A/B/model_name").
在使用过程中会遇到
当收到服务器消息用Lua来处理时,一般会将处理消息的功能函数分成另外一个模块,如果每次收到消息都要require会不会产生问题?require函数载入同样的Lua文件时,只有第一次的时候回去执行,会面相同的都不执行,所以当被require的文件中有变量初始问题的,使用require不用担心.
如果想要每次都要执行需要使用dofile()函数;如果你要载入后不执行,需要时再执行时 可以使用loadfile()函数。
如 local hello = loadfile("hello")
......
hello()
loadfile("hello")后hello文件并不执行,当执行hello()时才真的执行。
以下引用酷壳中的例子:
*********************************************************
假设我们有一个文件叫mymod.lua,内容如下:
1
2
3
4
5
6
7
8
9
10
11
|
local HaosModel = {} local function getname() return "Hao
Chen"
end function HaosModel.Greeting() print( "Hello,
My name is " ..getname())
end return
HaosModel
|
于是我们可以这样使用:
1
2
|
local hao_model =
require( "mymod" )
hao_model.Greeting() |
其实,require干的事就如下:(所以你知道为什么我们的模块文件要写成那样了)
1
2
3
|
local hao_model = (function () --mymod.lua文件的内容--
end)() |
*********************************************************