Я могу ответить на половину вашего вопроса, я думаю. Причина, по которой «даже при отпускании перетаскивания, следующий также появляется!» в том, что, пока вы соответственно ожидаете установленное время внутри сопрограмм, после этих вызовов WaitForSeconds
вы не проверяете, чтобы убедиться, что пользователь все еще перетаскивает. Это означает, что, пока пользователь перетаскивал, когда запускались сопрограммы, объекты обязательно будут порождаться.
Чтобы исправить это, добавьте проверку внутри сопрограмм, например if (MovingUp)
, или, если важно, чтобы она происходит только как часть одного перетаскивания, возможно, дайте каждому перетаскиванию идентификатор, когда он начинается, и затем проверьте, что вы все еще находитесь в том же самом перетаскивании, сравнивая идентификаторы перетаскивания непосредственно перед тем, как шары появляются.
I ' Я не уверен, почему они все появляются одновременно - основываясь на этих сопрограммах, они не должны этого делать, если только у вас слишком низкая частота кадров и вы получаете только 1 кадр в секунду.