您当前的位置: 首页 > 

云小川

暂无认证

  • 3浏览

    0关注

    78博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

记录一下子:对象池连续添加删除,不重复 (地鼠随机出现,不重复出现在一个洞类)

云小川 发布时间:2022-03-02 20:31:59 ,浏览量:3

//首先://定义一个地鼠集合  (对象池)
       public  List DiglettPools = new List();
        //定义一个地洞集合  (对象池)
        [SerializeField] public  List BurrowsPools = new List();
        List BurrowsPools02 = new List();//中转站



/// 
        /// 从对象池中获取
        /// 
        /// 
        public void GetObj(GameObject obj)
        {
            int posIdx = UnityEngine.Random.Range(0, GameManage.Instance.BurrowsPools.Count);
            Vector3 vector = BurrowsPools[posIdx].position;
            //判断池中是否有可用资源
            if (DiglettPools.Count == 0)  //没有则重新生成
            {
                GameObject go = Instantiate(obj, Vector3.zero, Quaternion.identity) as GameObject;
                go.transform.SetParent(UILevels.High);
                go.transform.position = vector;//位置赋值
                BurrowsPools02.Add(BurrowsPools[posIdx]);
                go.gameObject.name = BurrowsPools[posIdx].name;
                BurrowsPools.RemoveAt(posIdx);//移除位置
               
            }
            else
            {
                //从对象池中取
                GameObject go = DiglettPools[0];
                go.transform.SetParent(UILevels.High);
                go.SetActive(true);
                go.transform.position = vector;//位置赋值
                BurrowsPools02.Add(BurrowsPools[posIdx]);
                go.gameObject.name = BurrowsPools[posIdx].name;
                BurrowsPools.RemoveAt(posIdx);//移除位置
                DiglettPools.Remove(go);
               
            }
           
        }

        /// 
        /// 放到对象池中  (不需要的时候,放回去)
        /// 
        /// 
        public void SetObj(GameObject obj)
        {
            Debug.Log("放到对象池中");
            DiglettPools.Add(obj);
            for (int i = 0; i < BurrowsPools02.Count; i++)
            {
                Debug.Log("-------for i="+i);
                if (BurrowsPools02[i].position == obj.transform.position)
                {
                    Debug.Log("foreach----添加位置----"+i);
                    BurrowsPools.Add(BurrowsPools02[i]);//添加位置
                    BurrowsPools02.Remove(BurrowsPools02[i]);
                }
            }
          
            
            obj.SetActive(false);
        }

关注
打赏
1663746399
查看更多评论
立即登录/注册

微信扫码登录

0.2954s