public void GenPatrol(int num) { // num : the num of the generated Patrol for (int i = 0; i < num; i++) { SPatrolData tmpSpData = ScriptableObject.CreateInstance <SPatrolData>(); tmpSpData.speed = Random.Range(3f, 10f); tmpSpData.RectPoints = rectGen.GetRandomRect(); GameObject tmpPatrol = null; if (free.Count > 0) { Debug.Log("Regenerate from Free"); tmpPatrol = free.ToArray()[free.Count - 1]; free.RemoveAt(free.Count - 1); } else { Debug.Log("Generate new GameObject"); PatrolCount++; tmpPatrol = Instantiate(PatrolPrefab) as GameObject; tmpPatrol.name = "Patrol" + PatrolCount.ToString(); } tmpPatrol.GetComponent <SPatrol>().SetFromData(tmpSpData).ClearCallbacks().InitColor().InitPosition().StartPatrol(); var sp = tmpPatrol.GetComponent <SPatrol>(); sp.OnCollisionPlayer += GameEvents.CollidePlayer; sp.OnDiscoverPlayer += GameEvents.StartChasing; sp.OnLeavePlayer += GameEvents.LeavePlayer; used.Add(tmpPatrol); } }
public SPatrol SetFromData(SPatrolData spatrol) { this.RectPoints = spatrol.RectPoints; this.spatroleed = spatrol.spatroleed; this.hasBeenEscapedFrom = false; return(this); }