1

使用 C(99),我有一个从 Lua 脚本加载 Lua 表的游戏。

技术方面没有问题,一切都按预期工作。但是,C 核心使用许多常量来定义项目类型等。该脚本实际上提供了要加载的武器数据,为了清楚起见,应该使用相同的常量名称/值。在 C 中,常量是诸如 #define ITEM_TYPE_EDIBLE 2 之类的东西。

所以,我的问题是:如何轻松地将一个长的(约 300 个定义)整数列表从 C 导出到 Lua?应该不止一个脚本使用该列表,虽然内存大小并不是一个真正的问题,但我主要是为了方便。

我已经想到了这些可能的解决方案,但不确定从长远来看哪一个会更好:

  • A) 在处理所需脚本的 Lua 状态下手动创建嵌套表。
  • B) 手动创建一个包含常量的 lua 脚本,并将其导入到每个使用它们的脚本中。

那么,您认为最方便的方法是什么?如中,方便更新和在 Lua 方面使用,因此可以轻松编写 mods。项目加载都是在启动时完成的,所以如果它不是一个超快速的方法也没关系(例如,它不会滞后动作,只是启动时间)

哦,我正在使用 Lua 5.1,但不反对使用 5.2,如果它使我的任务变得更容易的话。如果可能,也不反对以编程方式更新列表。

4

2 回答 2

0

我会编写一个脚本来生成一个 C 标头,其中所有整数常量都设置为enums。另一个 C 文件,它具有改变 Lua 状态的函数,方法是添加所有这些常量的表,或者将它们单独添加到全局范围内作为预定义的数字变量。

于 2012-07-23T12:29:42.153 回答
0
  • A) 在处理所需脚本的 Lua 状态下手动创建嵌套表。
  • B) 手动创建一个包含常量的 lua 脚本,并将其导入到每个使用它们的脚本中。

你忘了:

  • C)手动创建一个包含常量的 Lua 脚本,然后当我创建我的 lua_State 时,立即导入它。这样,每个使用它们的脚本都可以假定它已被导入。

实际上,我通常会将这个脚本放在可执行文件本身或可执行文件加载的特殊文件中。

于 2012-07-23T16:22:51.717 回答