Unity中对象池的使用

来源:互联网 发布:螃蟹 知乎 编辑:程序博客网 时间:2024/05/21 09:30

Unity中对象池的使用

定义对象池

public class NewObjectPooler : MonoBehaviour{    public GameObject _gameObject;    //需要创建的预制对象    public int int_PooledAmount = 15;    //初始化数量    public Transform _tranForm;    //放置预制对象的容器    public bool bool_IsGrow = true;    //动态创建    List<GameObject> _gameObjects;    private void Awake ()    {        _gameObjects = new List<GameObject> ();        for (int i = 0; i < int_PooledAmount; i++) {            GameObject obj = (GameObject)Instantiate (_gameObject);            obj.transform.SetParent (_tranForm);            obj.transform.localScale = Vector3.one;            obj.transform.position = _tranForm.position;            obj.transform.rotation = _tranForm.rotation;            obj.SetActive (false);            _gameObjects.Add (obj);        }    }    // 初始化    public void Reset ()    {        for (int i = 0; i < _gameObjects.Count; i++) {            _tranForm.GetChild (i).gameObject.SetActive (false);        }    }    // 获取对象    public GameObject GetPooledGameObject ()    {        for (int i = 0; i < _gameObjects.Count; i++) {            if (!_gameObjects [i].activeInHierarchy) {                return _gameObjects [i];            }        }        // 动态添加        if (bool_IsGrow) {            GameObject obj = (GameObject)Instantiate (_gameObject);            obj.transform.SetParent (_tranForm);            obj.transform.localScale = Vector3.one;            obj.transform.position = _tranForm.position;            obj.transform.rotation = _tranForm.rotation;            _gameObjects.Add (obj);            return obj;          }        return null;    }}

对象池的使用

public void SetData (List<DataClass.TaskData> datas)    {        newObjectPooler.Reset ();        for (int i = 0; i < datas.Count; i++) {            GameObject obj = newObjectPooler.GetPooledGameObject ();            obj.SetActive (true);            UITaskItem item = obj.GetComponent<UITaskItem> ();            item.SetData (datas [i]);        }        content.sizeDelta = new Vector2 (content.sizeDelta.x,             (gridLayoutGroup.cellSize.y + gridLayoutGroup.spacing.y) * datas.Count);    }
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 1个月婴幼儿便秘怎么办 榨汁后的苹果渣怎么办 宝宝6个月后容易生病怎么办 婴儿头型睡偏了怎么办 6个月婴儿不吃奶怎么办 宝宝秋季腹泻反复发烧怎么办 纯甄过期一个月怎么办 四个月宝宝不吃奶瓶怎么办 四个月宝宝不吃奶粉怎么办 婴儿三四天不大便怎么办 婴儿几天不拉大便怎么办 新生儿6天不拉屎怎么办 孩子10天不大便怎么办 宝宝5天没拉屎怎么办 小孩4-5天不大便怎么办 三个月宝宝睡前哭闹厉害怎么办 新生儿抱着睡放下就醒怎么办 宝宝大运动发育迟缓怎么办 八个月宝宝不会爬怎么办 宝宝竖着抱早了怎么办 孕妇吃的水果少怎么办 6个月宝宝厌奶怎么办 5个月宝宝厌奶怎么办 11个月宝宝厌奶怎么办 母乳宝宝不喝奶粉怎么办 换奶粉不拉大便怎么办 宝宝和妈妈不亲怎么办 冬天榨果汁太凉怎么办 四个月宝宝拉水怎么办 婴儿吃奶吃撑了怎么办 1岁的宝宝腹泻怎么办 一岁宝宝老拉肚子怎么办 一岁宝宝拉肚子怎么办啊 小孩发烧怎么办39度要吃消炎药吗 孩子不爱吃水果蔬菜怎么办 一岁宝宝不吃水果怎么办 一岁宝宝不爱吃水果怎么办 1岁多宝宝不吃水果怎么办 中学生不爱与家长交流怎么办 孩子一直37度多怎么办 小孩39度3算高烧怎么办