void LoadSheep(List <SheepData> sheepDatas)
    {
        int sheepCount = sheepDatas.Count;

        for (int i = 0; i < sheepCount; ++i)
        {
            SheepController sheep = SheepFactory.Instance.CreateNewSheep(sheepDatas[i].sheepType);
            sheep.InitSheep(sheepDatas[i].sheepType);
            sheep.transform.position         = sheepDatas[i].position;
            sheep.transform.localEulerAngles = sheepDatas[i].localEulerAngles;
            switch ((SheepController.SheepState)sheepDatas[i].sheepState)
            {
            case SheepController.SheepState.Idle:
                currentSheepInCage++;
                break;

            case SheepController.SheepState.IsMovingOut:
                sheep.MoveOutOfCage();
                break;

            case SheepController.SheepState.Running:
                sheep.transform.localEulerAngles = new Vector3(0, 90, 0);
                sheep.transform.position         = beginPos.position;
                sheep.transform.position         = sheep.transform.position + UnityEngine.Random.Range(-3, 0) * sheep.transform.forward;
                sheep.DOMoveOnPath();
                break;

            case SheepController.SheepState.Jumping:
                sheep.DoJumpOverFence();
                break;

            case SheepController.SheepState.Picking:
                var pos = sheep.transform.position;
                pos.y = 1.8f;
                sheep.transform.position = pos;
                currentSheepInCage++;
                break;

            default:
                break;
            }
            activeSheeps.Add(sheep);
        }
    }