我有一个简单的项目,正在制作一款卡牌战斗游戏。战斗顺序如下:
repeat
BattleClient.PlayerAttackTween()
task.wait(battleSpeed)
BattleClient.EnemyAttackTween()
task.wait(battleSpeed)
battleRound += 1
until isInBattle.Value == false
我遇到的问题是,如果玩家在完成一场战斗后立即开始另一场战斗,则此循环仍处于
task.wait()
的中间,并且尚未进行 until
检查以打破循环,因此青少年在第二场比赛中打双打。
如何防止这种情况发生?
编辑:视频展示问题
IDK 整个函数/循环,但尝试这个算法:
local isBattleActive = false -- new binary flag
function StartBattle()
if isBattleActive then return end -- battle active :do not start
isBattleActive = true
repeat
BattleClient.PlayerAttackTween()
task.wait(battleSpeed)
BattleClient.EnemyAttackTween()
task.wait(battleSpeed)
battleRound += 1
until isInBattle.Value == false
isBattleActive = false -- battle over, reset flag
end