lua_state

按照我自己的理解 游戏里面是一个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) 这种方式可以避免重名


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


好的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值