2

我是 lua 新手,我想知道,使用 lua 存储游戏数据(例如怪物的描述、法术)是否有效。

我的问题是,当我尝试每秒创建一个怪物对象时,我必须运行 lua 文件并重复获取数据,我认为这可能效率不高。

在尝试使用 lua 之前,我使用 XML 来存储数据。在游戏开始时,我将“monster.xml”文件读取了一次,并一直保存在内存中,每次需要创建怪物时,我只是参考它。这种 XML 方法是否比 lua 更有效?还是有其他更好的解决方案?

谢谢 !

4

3 回答 3

5

Why not read the Lua file only once, store the data in memory and copy it whenever needed?

Or, if (some of) the data doesn't change, you don't even need to copy it; just have all the monsters of that type refer to the same copy of the data.

于 2012-12-30T12:27:54.020 回答
3

如果你通过 加载 Lua 文件lua_load(),你会得到一个编译过的块作为 Lua 函数。

所以所有的文件读取和解析只发生一次。运行这个函数并从 Lua 状态读取结果需要自己的成本,但我猜应该比从 XML 结构中获取数据要快。

于 2013-01-02T15:50:20.050 回答
3
  1. 从磁盘加载 X,然后在需要时从内存中读取。
  2. 每次需要数据时从磁盘加载 X。

对于任何 X 值(XML、Lua),#1 都将比 #2 快。

您正在将 #1(X=XML) 与 #2(X=Lua) 进行比较,这是一个苹果与橘子的比较。

如果你更喜欢使用 Lua 作为你的数据存储格式——无论出于何种原因(更简洁、更灵活等)——假设你对待相同的目的,没有理由不能像使用 XML 一样快加载的数据相同。

假设您将 Lua 用作加载数据(而不是行为)的一种方式,看起来您正在这样做,那么无论如何您都应该将数据提取到某些结构化数据类型中。一旦数据被吞入,该数据的来源(XML、Lua 等)对程序来说并不重要。

于 2013-01-02T18:14:11.240 回答