我打算在我正在制作的游戏中使用Lua作为对象的脚本语言。但是,游戏中的每个对象(最多可能有1000个)都会附加自己的脚本。好的一面是,每个脚本都很短(少于256个指令)。
在这种情况下,相对于单个大脚本,性能是否会变慢并且内存使用率会高?
答案 0 :(得分:2)
据推测,您的程序将有一个初始阶段,您可以在其中编译"每个脚本到一个块(只有一次),以及一个循环阶段,当对象进化时,即你根据需要多次调用块。在这种情况下,两个策略的性能在循环阶段是相同的。在初始阶段,可能存在一些小差异:
但是你通常不会担心" init"游戏(在此期间编译1000个脚本),只是运行循环。如果是这种情况,我建议使用one-script-per-object策略。每个对象脚本方法的另一个优点是,您最终可以决定仅在需要时编译对象的脚本,这不一定在init之后立即编译。例如,某些物体可能仅在某些条件下才变得活跃;然后只在首次满足条件时编译脚本,并缓存块,这样你就不必再次编译(对于那个对象)。
更新:
你可以在任何地方使用chunk,它只是一个Lua代码的Lua引用。你甚至可以"参数化"通过" ..."关键字,所以如果您的块是多行字符串:
local arg1, arg2 = ...
print(arg1, arg2)
并将其绑定到变量' test'然后你可以用参数的不同值调用块:
test(1, 2)
test('a', 'b')
将产生
1 2
a b