// Start is called before the first frame update
    void Start()
    {
        /////////////////////////////////
        // Cube Cases, Actual Cubes, Large Colls
        /////////////////////////////////
        cubeCase = entireCubeSetUp.transform.Find("Cube Case").gameObject;

        outerCubes          = cubeCase.GetComponent <MatchRotationOnStart>().outerCubes;
        outerActualCubes    = new GameObject[outerCubes.Length];
        outerLargeColliders = new GameObject[outerCubes.Length];

        for (int i = 0; i < outerActualCubes.Length; i++)
        {
            outerActualCubes[i] = outerCubes[i].transform.Find("Actual Cube").gameObject;
        }

        for (int i = 0; i < outerCubes.Length; i++)
        {
            outerLargeColliders[i] = GameObject.Find("Table/Side Cube " + i + "/Large Collider").gameObject;
        }

        /////////////////////////////////
        // Layer Rotate
        /////////////////////////////////
        layerRotate            = GetComponent <LayerRotate>();
        outerLayerRotateScript = new LayerRotate[outerCubes.Length];
        for (int i = 0; i < outerLayerRotateScript.Length; i++)
        {
            outerLayerRotateScript[i] = outerActualCubes[i].GetComponent <LayerRotate>();
        }

        /////////////////////////////////
        // Dummy Cubes
        /////////////////////////////////
        resetCube      = GameObject.Find("Dummy Cube Reset").gameObject;
        threeStepsCube = GameObject.Find("Dummy Cube 3Steps").gameObject;

        middleMiniCubes = new GameObject[GetComponent <LayerRotate>().Cubes.Length];
        for (int i = 0; i < middleMiniCubes.Length; ++i)
        {
            middleMiniCubes[i] = GetComponent <LayerRotate>().Cubes[i].gameObject;
        }

        resetMiniCubes = new GameObject[GetComponent <LayerRotate>().Cubes.Length];
        for (int i = 0; i < resetMiniCubes.Length; ++i)
        {
            resetMiniCubes[i] = resetCube.GetComponent <LayerRotateDummy>().Cubes[i].gameObject;
        }

        threeStepsMiniCubes = new GameObject[GetComponent <LayerRotate>().Cubes.Length];
        for (int i = 0; i < threeStepsMiniCubes.Length; ++i)
        {
            threeStepsMiniCubes[i] = threeStepsCube.GetComponent <LayerRotateDummy>().Cubes[i].gameObject;
        }

        ///////////////////
        // Text Mesh Pro
        ///////////////////
        textMeshPro = GameObject.Find("Canvas/Counter").gameObject.GetComponent <TextMeshProCounter>();
    }
    // Start is called before the first frame update
    void Start()
    {
        // IMPORTANT!: Ensure that all collider children are in correct order in the inspector.
        for (int i = 0; i < Colliders.Length; ++i)
        {
            Colliders[i] = transform.GetChild(i);
        }

        textMeshPro = GameObject.Find("Canvas/Counter").gameObject.GetComponent <TextMeshProCounter>();
        textMeshPro.setCounter(0);

        layerRotate = actualCube.GetComponent <LayerRotate>();
    }