当你发布lua
时,你或许不想用户看到你的lua
源码,更不想用户修改你的lua
代码和系统内部的秘密,那就需要用别的方式来发布。
最终的文本文件可以通过lua作者提供的标准发布版本中的程序来执行。这个程序称做luac.exe
,把lua
文本文件“编译”成二进制的文件。这样就可以让别人更难知道你的游戏是如何运行的,采用了什么技术。
编译
当写好一个lua
文件后,可以通过一个典型的编译命令去“编译”这个文件:
1 | F:\>luac -o helloworld helloworld.lua |
这一行代码会编译helloworld.lua
脚本并在helloworld
文件中生成二进制数据。lua
解析器并不关心你传给它的是文本文件还是二进制文件,也不关心扩展名是什么。
用这个方法,就不用担心别人可以看到你的代码了。
补充
当require
一个模块mod.sub
时,require
会用原始的模块名“mod.sub”作为key
来查询table package.loaded
和package.preload
,其中,模块名中的点在搜索中没有任何意义。
当搜索一个定义子模块的文件时,require
会将点转换为另一个字符,通常就是系统的目录分隔符。转换之后require
就像搜索其他名称一样来搜索这个名称。
所以最好的方法是在编译完lua
脚本后,也把二进制文件改成.lua
后缀。
El que ríe ultimo no ríe mejor, simplemente es por que no entendió el chiste.