使用现有函数创建函数

我正在尝试为游戏编写脚本,用创建的函数替换可用函数。这是我的LUA代码:

function ifEmotePlayed(playerName, emoteID)
if emoteID == 0 then
print(playerName.."正在跳舞!")
end
end
return
function eventEmotePlayed(playerName, emoteID)
end

我想做的事情是将eventEmotePlayed函数替换为ifEmotePlayed函数

function ifEmotePlayed(playerName, emoteID)
if emoteID==0 then
print(playerName.."正在跳舞!")
end
end

而不是

function eventEmotePlayed(playerName, emoteID)
if emoteID==0 then
print(playerName.."正在跳舞!")
end
end

有人知道怎么做吗?

点赞
用户2858170
用户2858170

如果你想重命名一个函数,你可以像这样做:

myNewFunctionName = originalFunctionName

然后调用myNewFunctionName()将会与调用originalFunctionName()相同,因为myNewFunctionName现在指向与originalFunctionName相同的函数。

在Lua中函数是变量。

你也可以定义一个函数来调用原来的函数并传递参数,像这样:

function myNewFunction(a,b)
  return originalFunction(a,b)
end

但这明显不如前一种方法高效,因为你必须多调用一个函数。

如果你想用自己的函数替换掉原来的函数,使原来的函数不会被执行,而是执行你的函数,你可以将你的函数赋值给原来函数的“名字”(实际上,你使变量从现在开始指向你自己的函数)。

function originalFunction(a,b)
  return a + b
end

function myOwnFunction(a,b)
  return a * b
end

originalFunction = myOwnFunction

现在,originalFunction指向你的函数,调用originalFunction(a,b)将返回ab的乘积而不是和。这与第一个例子相同,只是方向相反。

2017-01-05 21:52:48