首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >游戏NPC多动作lua脚本设计

游戏NPC多动作lua脚本设计
EN

Stack Overflow用户
提问于 2011-01-26 10:48:32
回答 2查看 1K关注 0票数 3

我需要在我的currect游戏项目中加入剧本NPC。该项目本身是用C++语言开发的。我将使用Luabind绑定lua和c++。

当某些NPC点击或计时器被激活时,我需要调用NPC函数。目前,我停留在两个NPC脚本设计之间。

  1. 用一种npcname_action来区分每个鼻咽癌。

给每个不同的全国人大取名字有点麻烦。

我仍在考虑如何在我的项目中实现这一点。

示例:

HotelBellboy12_Click() { ..} HotelBellboy12_TimerAction() { ..}使用函数名的

每个npc都有自己的lua文件。

我正在考虑将脚本加载到内存中,并在需要时使用luaL_loadbuffer将脚本加载到luaL_loadbuffer

示例:

OnClick() { ..} OnTimerAction() { ..}

哪个更好,为什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-27 16:39:30

我以前做过类似的事情,我使用了类似于你的第二个选项。当映射加载时,我加载一个包含所有NPC数据的配置Lua文件;其中包括用于NPC的脚本文件的名称。

当我需要在游戏中加载NPC时,我会编译Lua文件。NPC可以使用“模型”NPC类型来支配大多数在NPC配置中指定的常见行为(例如商人类型或平民类型)。这些模型类型提供所有基本功能,例如单击时提供一个交易窗口。特定的NPC使用像OnClick()这样的函数来覆盖它们的模型并提供自定义处理程序。

这对我来说很好,虽然如果你的游戏变得很大的话,它最终会变成大量的脚本。

票数 1
EN

Stack Overflow用户

发布于 2011-01-27 16:21:41

你可以用另一个设计。

利用这一事实,表键和值可以是任何类型。

假设npc是一个包含所有NPC的表,它的键是NPC的名称,它的值是另一个表。其他表键是操作,其值是此操作的函数。所以,如果你想让鲍勃在点击的时候跳起来,让爱丽丝在计时器后哭,那就做吧:

代码语言:javascript
复制
npc.bob.click = function () jump() end
npc.alice.timer = function () cry() end
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4803641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档