我试图创建一个插件,但我似乎无法从GetPlayer()函数外部访问返回的播放器类。
这是GetPlayer功能:
function GetPlayer(Player_To_Find) -- This is the function we use to verify the user exists, It will return the user class if the user exists
LOG("Finding " .. Player_To_Find) --False if they do not exist
local Found = false
local FindPlayer = function(TargetPlayer)
if (TargetPlayer:GetName() == Player_To_Find) then
Found = true
print("Found " .. TargetPlayer:GetName())
return TargetPlayer
end
end
cRoot:Get():FindAndDoWithPlayer(Player_To_Find, FindPlayer)
if Found == true then return TargetPlayer else return false end
end
如果我在使用此代码段返回后尝试调用TargetPlayer类:
TargetPlayer=GetPlayer(Target)
if TargetPlayer ~= false then
LOG(TargetPlayer:GetName())
它将失败并显示错误:
attempt to index global 'TargetPlayer' (a nil value)
任何人都可以指出我正确的方向,我花了很长时间才拿到空白。
答案 0 :(得分:2)
参数TargetPlayer
仅在函数体的范围内。 TargetPlayer
最后一行中的GetPlayer
引用了一个全局变量,该变量可能不存在,因此nil
。
在GetPlayer
函数中声明一个局部变量,将其设置在FindPlayer
函数的主体中,并在GetPlayer
的末尾返回它(也不要返回false
如果找不到播放器,请返回nil
,语义上意为“无”。)