思路就是:
有一个对象池,管理各种特效。
当需要播放特效时,触发如下代码:
blocker为粒子生成的位置
var particles = gamePools.iceParticlesPool.GetObject();
if (particles != null)
{
particles.transform.position = blocker.transform.position;
particles.GetComponent<TileParticles>().fragmentParticles.Play();
}
Prefab有两个脚本:
1. AutoKillPooled(用途是到了时间就自杀)
public class AutoKillPooled : MonoBehaviour
{
public float time = 2.0f;
private PooledObject pooledObject;
private float accTime;
/// <summary>
/// Unity's OnEnable method.
/// </summary>
private void OnEnable()
{
accTime = 0.0f;
}
/// <summary>
/// Unity's Start method.
/// </summary>
private void Start()
{
pooledObject = GetComponent<PooledObject>();
}

文章讲述了在Unity中使用对象池管理特效资源,特别是介绍了两个脚本:AutoKillPooled用于自动回收达到设定时间的粒子对象,而TileParticles则控制粒子系统的播放。

3583

被折叠的 条评论
为什么被折叠?



