求大佬指点下,关于幸存者的升级卡片选取
godot吧
全部回复
仅看楼主
level 1
娇小魔王是女仆
楼主
想模仿幸存者的升级,即升级后弹出卡片选取界面,或者击杀精英怪之后掉落的宝箱,拾取后出现特定一张卡片的选取界面。
已经都实现了,但是现在有个问题就是,在拾取宝箱的时候如果升级的话,两个界面都会弹出来。或者同时拾取了两个宝箱,也是这样。有没有办法给它们加个执行的顺序,选完一个再弹下一个卡片选取界面,直到全部结束后继续游戏。
2024年09月28日 13点09分
1
level 8
黙轻言
你弹出后直接暂停游戏就行了,总有先后的
2024年09月29日 10点09分
2
娇小魔王是女仆
升级然后随机卡牌填入卡牌选取界面的管理器是没办法去暂停的,不过还是谢谢你的回复,用await去等待卡牌选取信号之后再执行下一步即可。
2024年09月29日 13点09分
level 8
-诺里-
创建一个信号在选取完卡牌后发射。每当需要弹出卡片选取界面时,先检查一下当前是否已经有打开的界面,如果有就通过await信号等待选取卡牌后再弹出新的界面。
2024年09月29日 11点09分
3
level 8
-诺里-
想了想刚才的方法不太合适,如果有三个或更多界面,还是会出现同时显示的问题,可以这么改:
每个事件结束发射一个信号(这点跟上面一样)
创建一个数组记录要处理的事件
创建一个布尔值记录当前是否正在处理事件
创建一个方法,效果是添加一个事件,如果未在处理事件,则开始处理,处理方式时创建一个while循环,循环条件是有事件需要处理(数组不为空),每次循环处理一个事件,并通过await等待事件完成再进入下一个循环。
简单概括就是循环和异步,有没有更好的实现我也不知道,毕竟这是我一拍脑门想出来的
2024年09月29日 12点09分
4
娇小魔王是女仆
厉害,和我下午问gpt的答案差不多,只不过gpt的答案还停留在yield,自己改成了await卡牌选取的信号,已经解决了,谢谢大佬。现在的问题是,这个记录事件的数组,测了好多次,都是只保存了1个事件,然后立马开始执行,每个事件都这样执行,导致游戏变成了暂停,取消,暂停,取消直到全部执行结束
2024年09月29日 13点09分
-诺里-
@娇小魔王是女仆
只能有一个while循环正在处理事件,所以创了个布尔值变量啊,全部事件执行完成后再修改这个变量
2024年09月29日 13点09分
娇小魔王是女仆
@-诺里-
解决了,调试的时候发现是await在等待卡牌选择信号,阻塞了整个函数,把加入队列和执行队列分成两个函数就没问题了
2024年09月30日 00点09分
level 7
月光黯淡
重构一下底层,做一个队列或者直接指令模式,队列前一个完成了才执行下一个,可以搜下指令模式如何实现
2024年10月01日 14点10分
5
1