You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用NLua调用不存在的Lua函数触发异常的解决方法问询

问题:C#集成Lua时调用可选函数,判空仍触发"attempt to call a nil value"异常

场景与问题

我在自己开发的C#游戏中添加Lua支持,需要调用Lua里可选存在的函数:比如动画循环阶段,我会尝试调用{CurrentAnimation}_Loop来处理循环前的逻辑,但并非所有动画都需要这个逻辑。

我最初的实现是用luaCode.GetFunction(curState + "_Loop")获取函数对象,先判断是否为空再调用,但函数不存在时依然抛出异常:

NLua.Exceptions.LuaScriptException: 'attempt to call a nil value'

我不想为每个动画都编写空函数来规避这个问题,希望找到更合理的解决方案。

已验证的解决方案

按照Wh1t3rabbit的建议,修改函数获取方式为:

var loopFunc = luaCode[curState + "_Loop"] as LuaFunction;
if (loopFunc != null)
{
    loopFunc.Call();
}

通过这种方式获取函数并判空后调用,异常问题已解决。

内容的提问来源于stack exchange,提问作者Blakie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 01:00:57