private void ReverseBuild() { Vector3 pos = Vector2.zero; Vector3 pos1 = Vector2.zero; int rCount = _renders.Count / (sprites.Count * 2); for (int i = 0; i < sprites.Count; i++) { SpriteRenderer sp = sprites [i]; SpriteRenderer sr = Instantiate <SpriteRenderer>(sp); GameObject ga = sr.gameObject; ga.name = gameObject.name + "-" + rCount + "-" + i; ga.transform.SetParent(transform); _renders.Add(sr); //reverse SpriteRenderer sr1 = Instantiate <SpriteRenderer>(sp); GameObject ga1 = sr1.gameObject; ga1.name = gameObject.name + "-" + rCount + "-" + i + "_r"; ga1.transform.SetParent(transform); _renders.Add(sr1); switch (direction2D) { case Direction2D.down: { pos = new Vector2(0, -i * _unitSize.y); pos1 = new Vector2(0, -(sprites.Count + sprites.Count - i - 1) * _unitSize.y); //reverse Vector2DUtils.UpsideDown(sr1.transform); break; } default: break; } pos = _startPos + pos; pos.z = transform.position.z; sr.transform.position = pos; pos1 = _startPos + pos1; pos1.z = transform.position.z; sr1.transform.position = pos1; } _preCaculateSize = _renders.Count * _unitSize; switch (direction2D) { case Direction2D.down: { _startPos.y = transform.position.y - _preCaculateSize.y; break; } default: break; } }