查看: 1929|回复: 3
打印 上一主题 下一主题

[交流] BlockUseEvent等事件过多触发的解决办法

[复制链接]

2

主题

6

回帖

5

积分

Lv.1 新手木匠

UID
8075900
小麦
1
金锭
31
下界之星
0
跳转到指定楼层
楼主
发表于 2021-8-13 14:47:26 来自手机 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式 IP:浙江
官方示例中写到:如果一直点着右键会发现背包一下子就被钻石剑填满了。这是因为ServerBlockUseEvent事件每一帧(tick)都会触发,开发者在阅读文档时也应留意。
那么,如何解决这个问题呢?
首先,在服务端初始化时记录时间
def __init__(self, namespace, systemName):
      # ...
      self.timecomp = serverApi.GetEngineCompFactory().CreateTime(0)
      self.Time = self.timecomp.GetTime()

然后,在事件处理函数中,检测事件和上次执行事件是否存在足够间隔,如果没有,就取消执行
def OnServerBlockUseEvent(self, args):
        if self.timecomp.GetTime() < self.Time + self.INTERVAL:
            return "帧数过高,取消执行"
        else:
            self.Time = self.timecomp.GetTime()
其中,self.INTERVAL是间隔帧数

可以完美解决问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

返回顶部