private IEnumerator ColorCube() { gc.SetGuideNum(Guides.COLORING); gameObject.AddComponent <CubeColorer>(); //All buttons except play/pause button are disabled nextButton.GetComponent <Button>().interactable = lastButton.GetComponent <Button>().interactable = fasterButton.GetComponent <Button>().interactable = slowerButton.GetComponent <Button>().interactable = false; playPauseButton.GetComponent <Button>().interactable = true; playPauseButton.GetComponent <Image>().sprite = play; isPaused = true; while (true) { yield return(new WaitUntil(() => !isPaused)); if (CubeSolver.IsValidConfiguration(ct.GetBlocks())) { CubeColorer cc = gameObject.GetComponent <CubeColorer>(); if (cc != null) { Destroy(cc); } StartCoroutine(SolveCube(false)); yield break; } } }