コード例 #1
0
    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);
        }
    }
コード例 #2
0
 public SPatrol SetFromData(SPatrolData spatrol)
 {
     this.RectPoints         = spatrol.RectPoints;
     this.spatroleed         = spatrol.spatroleed;
     this.hasBeenEscapedFrom = false;
     return(this);
 }