如何在 Lua 中测试 None 值?

我目前正在使用 Lua API 开发 DOTA2 模组。 我发现在 Lua 中默认的'null'值是“nil”。

在编程时,我遇到了以下错误:

“脚本运行时错误:...\scripts\vscripts\addon_game_mode.lua:71: Can't call CBaseEntity:GetHealth on an object of type [none]”

我尝试测试值是否等于'none',但是在 Lua 中似乎不存在 'none' ...

我在网上读到的是,这可能是由于 DOTA 是用 C++ 编程的原因,但我找不到解决该错误的方法。

您有解决问题的想法吗?也许有一种方法可以测试类是否为空? 以下是源代码:

creature = nil

function CustomGameMode:makeSpawn()
    --让下一只敌人产生(creature ~=none就会出现问题)
    if (HeroList:GetHeroCount() == 0 or creature ~= nil or creature ~= none) then
        print("尚未产生或尚未死亡")
        return 5
    end

    print( "生成单位..." )
    --如果单位不存在,就生成它
    local spawnLocation = Entities:FindByName( nil, "test_spawning" )
    creature = CreateUnitByName( "npc_dota_neutral_alpha_wolf" , spawnLocation:GetAbsOrigin(),
    true, nil, nil, DOTA_TEAM_NEUTRALS )
    --当单位死亡时,creature 会有“none”值
    return 30 --该函数每30秒调用自己一次
end

提前感谢!

点赞