讲道理,类似小怪,子弹这种重复的大量的克隆体使用对象池才是王道,但是这次需要的敌人实在是太少了,只需要同时保持在两个就好,根本没有使用对象池的必要,所以自己写一个脚本刷新敌人就行了,全部代码里的唯一难点可能就在于如何判断场景中有多少现存的敌人,我不想定义一个int类型的值作为计数器,因为敌人被销毁时若要传值的话,会增加代码的耦合,所以在场景中新建一个空物体,讲脚本挂在空物体上,克隆出的小怪作为空物体的子物体,然后去统计空物体的子对象数量,这样来判断是否应该刷新一个敌人。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnemyObjectPool : MonoBehaviour
{
public GameObject ParentEnemy;//所有克隆出来的enemy都放置在此对象下
public GameObject[] Enemy;//存储敌人预制体的数组
public Transform[] BornPoint;//存储出生点位置的数组
public int EnemyMax = 2;//enemy的上限 小于此阈值才会刷新新的enemy
private int EnmyNum;//当前游戏中enemy的数量
void Start()
{
InvokeRepeating("EnemyIncrease", 1, 3);//延时重复执行
}
void EnemyIncrease()
{
EnmyNum = ParentEnemy.transform.childCount;//检查父