//首先://定义一个地鼠集合 (对象池)
public List DiglettPools = new List();
//定义一个地洞集合 (对象池)
[SerializeField] public List BurrowsPools = new List();
List BurrowsPools02 = new List();//中转站
///
/// 从对象池中获取
///
///
public void GetObj(GameObject obj)
{
int posIdx = UnityEngine.Random.Range(0, GameManage.Instance.BurrowsPools.Count);
Vector3 vector = BurrowsPools[posIdx].position;
//判断池中是否有可用资源
if (DiglettPools.Count == 0) //没有则重新生成
{
GameObject go = Instantiate(obj, Vector3.zero, Quaternion.identity) as GameObject;
go.transform.SetParent(UILevels.High);
go.transform.position = vector;//位置赋值
BurrowsPools02.Add(BurrowsPools[posIdx]);
go.gameObject.name = BurrowsPools[posIdx].name;
BurrowsPools.RemoveAt(posIdx);//移除位置
}
else
{
//从对象池中取
GameObject go = DiglettPools[0];
go.transform.SetParent(UILevels.High);
go.SetActive(true);
go.transform.position = vector;//位置赋值
BurrowsPools02.Add(BurrowsPools[posIdx]);
go.gameObject.name = BurrowsPools[posIdx].name;
BurrowsPools.RemoveAt(posIdx);//移除位置
DiglettPools.Remove(go);
}
}
///
/// 放到对象池中 (不需要的时候,放回去)
///
///
public void SetObj(GameObject obj)
{
Debug.Log("放到对象池中");
DiglettPools.Add(obj);
for (int i = 0; i < BurrowsPools02.Count; i++)
{
Debug.Log("-------for i="+i);
if (BurrowsPools02[i].position == obj.transform.position)
{
Debug.Log("foreach----添加位置----"+i);
BurrowsPools.Add(BurrowsPools02[i]);//添加位置
BurrowsPools02.Remove(BurrowsPools02[i]);
}
}
obj.SetActive(false);
}
记录一下子:对象池连续添加删除,不重复 (地鼠随机出现,不重复出现在一个洞类)
关注
打赏