private void SpawnIsles()
    {
        // OBJECT LAYER SPAWN
        for (int i = 0; i < objectsInLayer; i++)
        {
            int objectID = Random.Range(0, Controler.ParallaxIsles.Length);

            Object     paralaxObject = Controler.ParallaxIsles[objectID];
            GameObject go            = (GameObject)Instantiate(paralaxObject, transform) as GameObject;

            SpriteRenderer renderer         = go.GetComponent <SpriteRenderer>();
            SpriteRenderer childrenRenderer = go.transform.GetChild(0).GetComponent <SpriteRenderer>();

            // Position
            go.transform.position   = CalculatePosition(i);
            go.transform.localScale = CalculateScale(go.transform.localScale);
            // Layer
            SetSpriteRenderers(ref renderer, ref childrenRenderer, go.transform.position.z);
            // Add to the List
            ParallaxElement element = go.GetComponent <ParallaxElement>();
            element.SetLayer(this);

            parallaxElements.Add(go.GetComponent <ParallaxElement>());
        }
    }
    private void SpawnClouds()
    {
        for (int i = 0; i < cloudsNumber; i++)
        {
            int        cloudID  = Random.Range(0, Controler.ParallaxClouds.Length);
            Object     cloudObj = Controler.ParallaxClouds[cloudID];
            GameObject cloudGo  = (GameObject)Instantiate(cloudObj, transform) as GameObject;

            cloudGo.transform.localScale = CalculateCloudScale(cloudGo.transform.localScale);

            int posXnb;
            int posYnb;

            posXnb = Mathf.CeilToInt(layerRect.width / minSpaceBetweenClouds.x);
            posYnb = Mathf.CeilToInt(layerRect.height / minSpaceBetweenClouds.y);

            int posXid;
            int posYid;

            posXid = Random.Range(0, posXnb);
            posYid = Random.Range(0, posYnb);

            Vector3 pos = cloudGo.transform.position;
            pos.x = layerRect.xMin + posXid * minSpaceBetweenClouds.x;
            pos.y = layerRect.yMin + posYid * minSpaceBetweenClouds.y + cloudsOffsetY;
            pos.z = (parallaxElements.Count > 0) ? (parallaxElements[parallaxElements.Count - 1].transform.position.z + 5) : (transform.position.z + 20);
            cloudGo.transform.position = pos;

            SpriteRenderer renderer = cloudGo.GetComponent <SpriteRenderer>();
            renderer.sortingOrder = (int)(-pos.z) + Controler.MinSortingOrder + i;

            ParallaxElement element = cloudGo.GetComponent <ParallaxElement>();
            element.SetLayer(this);
            parallaxElements.Add(cloudGo.GetComponent <ParallaxElement>());
        }
    }