我是lua的新手,我想知道,使用lua存储游戏数据(例如怪物的描述,法术)是否有效。
我的问题是, 当我尝试每秒创建一个怪物对象时,我必须运行lua文件并重复获取数据, 我认为这可能效率不高。
在我尝试使用lua之前,我使用XML来存储数据。 在游戏开始时,我读了一次“monster.xml”文件,并将其保存在内存中,每次我需要创建一个怪物时,我只是参考它。 这种XML方法比lua方法更有效吗?或者还有其他更好的解决方案吗?
谢谢!
答案 0 :(得分:5)
为什么不只读一次Lua文件,将数据存储在内存中并在需要时复制它?
或者,如果(某些)数据没有改变,您甚至不需要复制它;让这种类型的所有怪物都引用相同的数据副本。
答案 1 :(得分:3)
如果您通过lua_load()
加载Lua文件,则会获得一个已编译的块作为Lua函数。
因此所有文件读取和解析只发生一次。运行这个函数并从Lua状态读取结果需要它自己的成本,但是我想比从XML结构中获取数据要快。
答案 2 :(得分:3)
#1将比#2快。
您将#1(X = XML)与#2(X = Lua)进行比较,这是一个苹果与橙子的比较。
如果您更喜欢使用Lua作为您的数据存储格式 - 无论出于何种原因(更简洁,更灵活等) - 没有理由它不能像使用XML一样快,假设您将加载的数据视为相同。
假设你正在使用Lua作为加载数据(而不是行为)的一种方式,它看起来就像你正在做的那样,你应该将数据拉出来用于某些结构化数据类型无论如何。一旦数据被插入,该数据的源(XML,Lua,无论如何)应该对程序无关紧要。