Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lua脚本无法识别self.id_Lua_Cryengine - Fatal编程技术网

Lua脚本无法识别self.id

Lua脚本无法识别self.id,lua,cryengine,Lua,Cryengine,我正在修改一个现有的程序来实现一个新的工具栏。该程序使用Lua脚本来处理Flash动画和命令的显示和处理。我可以调用Flash动画窗口,但添加命令侦听器的行失败 AddFSCommandListener(self.file\u SWF,self.id) 错误是:“错误的参数类型。函数HUD.AddFSCommandListener(movie,entityId)预期参数2的类型为指针(提供的类型为Null)” 我在这个系统里到处跑来跑去,我不知道我做错了什么,尽管我怀疑有某种注册步骤我做得不对。

我正在修改一个现有的程序来实现一个新的工具栏。该程序使用Lua脚本来处理Flash动画和命令的显示和处理。我可以调用Flash动画窗口,但添加命令侦听器的行失败

AddFSCommandListener(self.file\u SWF,self.id)

错误是:“错误的参数类型。函数HUD.AddFSCommandListener(movie,entityId)预期参数2的类型为指针(提供的类型为Null)”

我在这个系统里到处跑来跑去,我不知道我做错了什么,尽管我怀疑有某种注册步骤我做得不对。我正在开发的游戏使用CryEngine,而且我看到没有很多人问关于它的问题。然而,如果这个错误在另一个系统中有某种类似的东西,那么也许这会激发我的思维,让我知道我需要做什么


谢谢。

您的问题可能是您实际需要解决的问题

HUD:AddFSCommandListener(self.file_SWF, self.id)
问题不是它不能识别self.id,而是当您使用点表示法调用时,您传递的第一个参数将成为函数的“self”参数,如果该函数是表函数的话。所以它寻找的第二个参数实际上是零

冒号函数表示法是隐式传递self变量的语法糖,self成为表(在本例中为HUD)。因此,大多数lua接口将从第二个参数开始计数。第二个是第三个

例如:

HUD = {}

function HUD:AddFSCommandListener(file, id)

end
实际上相当于:

HUD = {}

HUD.AddFSCommandListener = function( self, file, id )

end

因此,当您使用点而不是冒号调用时,您会将您的文件\u swf放入它最可能期望的自参数中。

这里有一个链接,看起来第一个参数应该是self.Hud.file\u swf?访问swf文件不是问题。问题在于第二个参数。Lua表中最初没有包含“id”值,但对于程序中的所有Lua脚本都是如此。在初始化过程中的某个时刻,为每个Lua表(实体)分配一个id号/值。我仍在努力追踪这一切发生的地方,但到目前为止还没有找到成功的地方。在我看来,Lua实体要么创建得不正确,要么由于某种原因被垃圾收集。根据这个()函数,每个Lua实体都有一个唯一的标识符,该标识符是通过spawneEntity()函数分配的。