计时器相关,请问这种情况要怎么设计
godot吧
全部回复
仅看楼主
level 1
格斗苦手
楼主
游戏角色的可叠加限时buff相关,举个例子就减防吧
目前的想法是,角色每获得一个减防御buff,就将其放入一个固定的数组中,然后生成一个计时器开始计数,
但如果有多个减防buff叠加时,计时器就无法知道,他所对应的是哪数组中的哪一个减防buff;
同时,计时器的timeout信号也没有参数,没有办法指定数组中的某个buff并将其删除。
请问这种情况应该怎么设计,希望大佬指教
2023年04月23日 04点04分
1
level 1
格斗苦手
楼主
想到了,把buff和计时器打包成一个场景,当角色获取debuff后实例化成一个子节点,再用信号连接,但是感觉这样复杂度一下就上来了
2023年04月23日 07点04分
2
人类的大敌
把buff封装成一个场景也确实是种方法。不过实现一个效果也是可以有许多方式:比如使用面向对象的话,可以通过class关键字把buff封装成一个类,那么定时器就可以作为这个类的成员变量,对应的buff就是这个对象的self引用。以及如果要节省变量的话,除了计时器以外,像Tween也可以拿来当计时器用……
2023年04月23日 09点04分
格斗苦手
@人类的大敌
原来如此,学到了
2023年04月23日 11点04分
level 5
ANTlQUATED
哈哈,我的方法和你的一样,就是ready函数修改父节点属性,timeout信号的函数里把父节点属性改回去然后把自己free掉,我感觉挺简单的
2023年04月23日 10点04分
3
level 7
是艾可可呀
把计时器和buff绑定在一起是个解决思路,但是从优化角度讲多个buff会有多个计时器,我想的是把所有的buff放入一个字典,字典里包含buff和buff所剩余的时间,计时器每触发一次,如果buff的剩余时间大于0就统一减1,直到减到0,然后将这个buff从字典中去除,如果字典中没有键值对,计时器关闭。
2023年04月24日 02点04分
4
贴吧用户_5RJ7C9t
这样一个计时器搞定所有
2023年10月12日 00点10分
level 5
千冰炫
可以参考任务调度的算法
2023年04月24日 08点04分
5
1