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) 这种方式可以避免重名
好的,大概懂了 我再研究研究 谢谢了啊
好的
这样好像比较耗内存吧?
一共一个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) 这种方式可以避免重名
好的,大概懂了 我再研究研究 谢谢了啊
好的
相关文章推荐
- Lua 命名规范
- Lua chunk(程序块)
- Lua 运行你的第一个HelloWorld
- leetcode——Evaluate Reverse Polish Notation 求算式值(AC)
- [LeetCode] Evaluate Reverse Polish Notation, Solution
- Lua脚本语言简明入门教程
- Lua & C 交互 3 c/c++调用lua
- Lua & C 交互 2 尝试操作lua栈
- Lua & C 交互 1 环境搭配
- luci 打印函数封装
- Lua 与C 交换 第一篇
- Lua中的模块与module函数详解
- Lua模块和模块载入浅析
- Lua协同程序coroutine详解
- lua里面求int数组的union,diff,inter,distinct 方法实现
- Lua函数闭包解析
- lua学习笔记
- lua -- encode and decode
- Lua学习笔记6:C++和Lua的相互调用
- Lua学习笔记9:多文件