方法和之前一样,
1、在对象池ObjectPool.cs里添加一个声明
private List<GameObject> deathEffectList = new List<GameObject>();
2、在ManageVars.cs里也添加一个变量声明
public GameObject deathEffect;
3、返回ObjectPool.cs的void Init()函数里面加入实例化代码
for (int i = 0; i < initSpawnCount; i++)
{
InstantiateObject(vars.deathEffect , ref deathEffectList);
}
4、在ObjectPool.cs中创建一个获取死亡特效的函数
/// 获得死亡特效
public GameObject GetDeathEffect()
{
for (int i = 0; i < deathEffectList.Count; i++)
{
if (deathEffectList[i].activeInHierarchy == false)
{
return deathEffectList[i];
}
}
///执行到这里就说明对象池中没有物体了,我们就给它生成一个物体,
///生成之后还需要将其加进去
return InstantiateObject(vars.deathEffect, ref deathEffectList);
}
5、这样之后我们回到PlayerController.cs,在游戏结束销毁玩家之前修改:
if (isJumping && IsRayObstacle() && GameManager.Instance.IsGameOver==false)
{
GameManager.Instance.IsGameOver = true;
Destroy(gameObject);
}
添加代码:
GameObject go = ObjectPool.Instance.GetDeathEffect();
go.SetActive(true);
go.transform.position = transform.position;
最终改为:
if (isJumping && IsRayObstacle() && GameManager.Instance.IsGameOver==false)
{
GameObject go = ObjectPool.Instance.GetDeathEffect();
go.SetActive(true);
go.transform.position = transform.position;
GameManager.Instance.IsGameOver = true;
Destroy(gameObject);
}
6、记得最后要指定!!!