- 回帖
- 6
- 主题
- 2
- 积分
- 5
- 精华
- 0
- 注册时间
- 2020-8-19
- 最后登录
- 2022-2-19
- 在线时间
- 4 小时
- MC游龄
- 3年以上
Lv.1 新手木匠
- UID
- 8075900
- 小麦
- 1
- 金锭
- 31
- 下界之星
- 0
|
官方示例中写到:如果一直点着右键会发现背包一下子就被钻石剑填满了。这是因为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是间隔帧数
可以完美解决问题 |
|