使用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
相关产品推荐
相关产品推荐

