Lua中返回类

我正在尝试创建一个插件,但我不能从GetPlayer()函数外部访问返回的player类。

以下是GetPlayer函数:

function GetPlayer(Player_To_Find) -- 这是我们用来验证用户是否存在的函数,如果用户存在,则返回用户类
    LOG("查找 " .. Player_To_Find) --如果不存在则为False
    local Found = false
    local FindPlayer = function(TargetPlayer)
        if (TargetPlayer:GetName() == Player_To_Find) then
            Found = true
            print("找到 " .. 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())

它将失败并显示错误:

尝试索引全局变量'TargetPlayer'(一个空值)

有谁能指引我方向?我已经试了很长时间了,但都失败了。

点赞
用户646619
用户646619

参数 TargetPlayer 只在函数体中生效。GetPlayer 最后一行中的 TargetPlayer 引用了一个全局变量,假设其不存在,因此为 nil

GetPlayer 函数中声明一个局部变量,在 FindPlayer 函数体中对其进行设置,并在 GetPlayer 的结尾处返回它(如果找不到玩家,不要返回 false,而是返回 nil,这在语义上表示 "没有东西")。

2016-03-24 22:01:41