您的位置:首页 > 编程语言 > Lua

lua_state

2016-01-12 15:12 791 查看
按照我自己的理解 游戏里面是一个lua脚本对应一个lua_state,每次服务器运行的时候把所有脚本都加载进内存 然后再用就可以了 是这样吗

这样好像比较耗内存吧?

一共一个lua state

你那样太耗内存,脚本之间也不可以互相require

晕 那和我理解出入有点大了啊 那么现在有2个情况了: 是服务器启动的时候加载所有的脚本还是需要的时候在luaL_loadfile呢?

大部分都是启动时候载入

有些部分可以动态载入

这样的话一个lua_state里面可以同时加载多个脚本文件咯? 这样所有的脚本里的函数名得保证不重名吧?

动态载入也是用luaL_Loadfile吗? 载入后怎么释放呢?

lua也可以用module的方式,防止重名

载入后为啥要释放?

一般都是不释放,预加载

这样调用效率高

好吧 我理解了 我产生这个问题是这样的 传奇用的pascal脚本,他是每个npc一个脚本,每个npc都相当于有一个lua_state的对象 在程序启动的时候加载所有脚本 每个npc调的时候都调自己的 然后今天看一个游戏源码 他只有1个lua_state这就和传奇的设计不一样了 所以我就过来求证一下 哈哈

是的,只有一个luastate

那按照一个lua_state的方式的话 我得根据npc的信息来操作栈?

npc可以绑定一个lua脚本

什么意思? npc绑定脚本是什么意思?

这个脚本加载到lua_state里面后 怎么定位呢? npc名字?

npc创建的时候,绑定一个lua脚本名

比如响应点击npc事件

call(scriptName, 'main')

你意思是 scriptname就相当于module名 我在实现这个call的时候 实际上相当于lua_pcall(scriptname.main)这样的形式?

对的

module(..., package.seeall) 这种方式可以避免重名

好的,大概懂了 我再研究研究 谢谢了啊

好的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: