using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace WildAttack
{
///
/// 气球池
///
public class BalloonPool : Singleton, IObjectPool
{
#region Members
private List> balloonObjs;
private Transform poolTrans;
#endregion
#region Override
public void Init()
{
poolTrans = GameObject.Find("BalloonPool").transform;
balloonObjs = new List>();
// index
for (int i = 1; i <= 6; i++)
{
List balloons = new List();
// num
for (int k = 0; k < 5; k++)
{
GameObject ball = GameObject.Instantiate(Resources.Load($"StageProperty/balloon_{i}"), poolTrans);
ball.AddComponent();
ball.SetActive(false);
balloons.Add(ball);
}
balloonObjs.Add(balloons);
}
}
public GameObject GetGameObject()
{
List randomBalloons = balloonObjs[Random.Range(0, 6)];
for (int i = 0; i < randomBalloons.Count; i++)
{
if (!randomBalloons[i].activeInHierarchy)
{
return randomBalloons[i];
}
}
int rdmIndex = Random.Range(1, 7);
GameObject ball = GameObject.Instantiate(Resources.Load($"StageProperty/balloon_{rdmIndex}"), poolTrans);
ball.AddComponent();
balloonObjs[rdmIndex - 1].Add(ball);
return ball;
}
public void RecycleAll()
{
for (int i = 0; i < poolTrans.childCount; i++)
{
if (poolTrans.GetChild(i).gameObject.activeSelf)
{
poolTrans.GetChild(i).transform.eulerAngles = Vector3.zero;
poolTrans.GetChild(i).gameObject.SetActive(false);
}
}
}
#endregion
#region Functions
///
/// 只get红色
///
///
public GameObject GetRedBalloon()
{
List redBalloons = balloonObjs[2];
for (int i = 0; i < redBalloons.Count; i++)
{
if (!redBalloons[i].activeInHierarchy)
{
return redBalloons[i];
}
}
GameObject ball = GameObject.Instantiate(Resources.Load("StageProperty/balloon_3"), poolTrans);
ball.AddComponent();
balloonObjs[2].Add(ball);
return ball;
}
#endregion
}
}