对象池优化

本文介绍了Unity中的对象池实现,通过PoolManager类管理对象池,预先创建并存储一定数量的游戏对象,减少对象频繁创建和销毁带来的性能开销。在需要时通过Get方法获取对象,使用完毕后通过Set方法归还到池中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

using UnityEngine;

using System.Collections;

using System.Collections.Generic;

/// <summary>

/// 对象池

/// </summary>

public class PoolManager : MonoBehaviour {

 

    public static PoolManager Instance;

 

    public Transform qiuPrefab;

 

    public int amount;//开始的数量

 

    //qiu 的list 用于管理对象池中的对象

    public List<Transform> qiuList = new List<Transform>();

 

    //public int currentAmount { get { return qiuList.Count} }

 

    private void Awake()

    {

        Instance = this;

    }

 

    // Use this for initialization

    void Start ()

    {

        //1.预先在池中放入一些对象

        for (int i = 0; i < amount; i++)

        {

            Transform clone = Instantiate(qiuPrefab);

            qiuList.Add(clone);

            clone.gameObject.SetActive(false);

        }

}

 

    public Transform Get()

    {

        if (qiuList.Count == 0)

        {

            Transform clone = Instantiate(qiuPrefab);

            return clone;

        }

        //取

        Transform qiu = qiuList[0];

        //

        qiuList.RemoveAt(0);

        return qiu;

    }

 

    public void Set(Transform qiu)

    {

        qiu.gameObject.SetActive(false);

        qiuList.Add(qiu);

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张好看

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值