private bool FillFlasks(Color[] colors, int ballsToSpawn) { Ball[] balls = new Ball[ballsToSpawn]; for (int i = 0; i < balls.Length; i++) { var ball = Instantiate(ballPrefab); ball.Color = colors[i % colors.Length]; balls[i] = ball; } for (int i = 0; i < balls.Length; i++) { int toSwap = Random.Range(0, balls.Length); var buf = balls[toSwap]; balls[toSwap] = balls[i]; balls[i] = buf; } Flask flask = Flasks[0]; for (int i = 0, next = 1; i < balls.Length; i++) { if (flask.IsFull) { if (flask.AreSameColors()) { return(false); } else { flask = Flasks[next++]; } } flask.PutImmediate(balls[i]); } return(true); }