LUA执行代码顺序错误-可能与桌面模拟器有关
2022-2-22 12:49:3
收藏:0
 阅读:1527
 评论:1
我对LUA还比较新,并且还在学习。到目前为止,我还没有遇到任何异步功能,但我的代码似乎表现出这种行为。这真的很奇怪。我有以下功能:
function chgAttacker(attacker)
    local stats = getModelstats(attacker)
    Attacker = stats
    local WS = stripTextFormatting(stats[2])
    local BS = stripTextFormatting(stats[3])
    local Attack = stats[7]
    local weaponStrength, armorPen =  getWeapons(attacker)
    UI.setAttribute("model_BS", "text", BS) -- 在UI上设置BS技能
    UI.setAttribute("model_WS", "text", WS) -- 在UI上设置WS技能
    UI.setAttribute("model_attacks", "text", Attack) -- 在UI上设置攻击技能
end
如果我删除具有getWeapons(attacker)行的函数,函数将像您预期的那样工作(这是我接下来将要解释的)。它非常基本,只是获取一个字符串,解析它,然后将其存储在stats变量中。最后3行UI随后会根据这些状态更新我的UI中的3个值。当我说这个完美时,你必须相信我。
问题开始出现在我添加getWeapons(attacker)之上时,它也更新这些UI值(实际上它将其重置为某些默认值)。但是,最后的3行明显是要覆盖getWeapons(attacker)所设置的任何内容。但是,它没有。假设起始UI BS值为1,并且 getweapons()将其更新为2,则UI.setAttribute("model_BS", "text", BS)将其更新为3;这正是我观察到的:它从1开始,然后(非常简要地)更新为3,然后更新为2。
就像它是以异步方式运行一样。有人以前见过这种情况吗,或者可以建议我如何使LUA“等待”,直到getweapons()函数完成吗?
编辑:我自己修复了它,我正在使用内置的等待函数...但似乎它实际上并没有等待。我删除了这个函数现在它可以工作了。真的很奇怪,因为我必须首先添加它,因为UI无法快速更新。
点赞
 
                评论区的留言会收到邮件通知哦~
            
  
                推荐文章
            
 - 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
 - 如何在roblox studio中1:1导入真实世界的地形?
 - 求解,lua_resume的第二次调用继续执行协程问题。
 - 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
 - SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
 - Lua实现网站后台开发
 - LUA错误显式返回,社区常见的规约是怎么样的
 - lua5.3下载库失败
 - 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
 - lua lanes多线程使用
 - 一个kv数据库
 - openresty 有没有比较轻量的 docker 镜像
 - 想问一下,有大佬用过luacurl吗
 - 在Lua执行过程中使用Load函数出现问题
 - 为什么 neovim 里没有显示一些特殊字符?
 - Lua比较两个表的值(不考虑键的顺序)
 - 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
 - 如何在 Visual Studio 2022 中运行 Lua 代码?
 - addEventListener 返回 nil Lua
 - Lua中获取用户配置主目录的跨平台方法
 
问题在于我在
targetweapons()中(未显示)使用了Tabletop模拟器功能wait。下面是如何使用它的示例:Wait.frames( function() print("Hello!") end, 2 )我将其设置为2个滴答,是为了其他原因 - 当更新UI时,至少需要一个滴答,因此我需要上述等待。但是,这具有使其表现为异步调用的不利影响。在删除后,它按预期工作了。