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); } }