魔兽地图编辑器吧 关注:65,493贴子:3,843,072
  • 16回复贴,共1

怎么使用lua调试和lua闭包问题?

只看楼主收藏回复

lua调试不知道怎么调试。。
lua闭包研究了2天,不知道如何解决。函数内部子函数称为闭包。闭包需要包含上级函数的变量数据,如同上下文。
lua注册的触发器动作、计时器函数等等每次触发事件都会新增一个闭包,jass代码相应的增加一个,不会自动删除创建的闭包和jass代码。


IP属地:湖南1楼2024-11-24 09:19回复
    与全局变量同一等级的函数不会新增闭包。


    IP属地:湖南2楼2024-11-24 09:25
    收起回复
      2025-10-02 05:01:18
      广告
      不感兴趣
      开通SVIP免广告
      简单的办法:
      使用handle绑定闭包id,始终使用新的闭包,解除旧的闭包引用并替换上一个绑定的jass代码。


      IP属地:湖南4楼2024-11-24 09:52
      回复
        不知道闭包怎么创建的?
        启动计时器每次都创建闭包:
        local timer=CJ.CreateTimer()
        CJ.TriggerAddAction(trig, function()
        function TimerFunc()
        end
        CJ.TimerStart(timer, 1.00, true, TimerFunc)
        end)
        TriggerAddAction没有按循环创建多个闭包。。
        local timer=CJ.CreateTimer()
        for i=1,100 do
        CJ.TriggerAddAction(trig, function()
        function TimerFunc()
        end
        CJ.TimerStart(timer, 1.00, true, TimerFunc)
        end)
        end


        IP属地:湖南5楼2024-11-24 10:42
        收起回复
          修正错误:"lua注册的触发器动作、计时器函数等等每次触发事件都会新增一个闭包"
          混淆了计时器动作和触发器动作,触发器动作触发没有新增闭包,计时器启动后应该使用的都是一个闭包。


          IP属地:湖南6楼2024-11-24 10:53
          回复
            有句话说得好,匿名闭包频繁创,不如改为动作行。
            ydlua就这个毛病,买内置,人家已经给解决了。


            IP属地:山东7楼2024-11-24 12:55
            收起回复
              定义好的东西怎么会新增,魔怔了吧


              IP属地:江苏来自Android客户端8楼2024-11-24 12:58
              回复
                按照之前的设想修改了代码,保留了闭包的使用,运行正常,只是简单测试了一下,可能有BUG,暂时懒得管了。


                IP属地:湖南12楼2024-11-24 15:17
                回复
                  2025-10-02 04:55:18
                  广告
                  不感兴趣
                  开通SVIP免广告
                  一般不是在lua层写中心计时器来用吗


                  IP属地:广东来自Android客户端13楼2025-01-28 08:22
                  回复
                    感谢科普,不明觉厉


                    IP属地:广西14楼2025-02-06 10:58
                    回复
                      闭包这么方便,却不能用


                      IP属地:四川来自Android客户端15楼2025-02-06 12:19
                      回复
                        用太阳rpg编辑器Ts编程语言作图 就不用担心这些问题了。底层已经全部用事件总线来分发了。lua层的闭包就没事。不要把lua层的闭包当参数传到cj函数入参里


                        IP属地:重庆16楼2025-02-11 15:30
                        收起回复
                          https://www.bilibili.com/video/BV1cRGxzREbp 内有群号,加群获取免费的lua内置API和最新全套的lua魔兽地图开发框架


                          IP属地:福建17楼2025-07-24 17:48
                          回复