泛型子弹池

如需转载,请保留本文链接。

核心思想:根据不同类的hashcode值不同,将其作为key值,将子弹存在对应key的list中。

核心方法如下:

 //泛型添加子弹到dic
     void Add<T>(GameObject obj) where T:BulletBase
    {
        int hashcode = typeof(T).GetHashCode();
        if (TSleepBulletDic.ContainsKey(hashcode))
        {
            TSleepBulletDic[hashcode].Add(obj);
        }
        else
        {
            TSleepBulletDic.Add(hashcode, new List<GameObject>());
            TSleepBulletDic[hashcode].Add(obj);
        }
        obj.SetActive(false);
        obj.transform.parent = BulletRoot.transform;
    }
    //return泛型子弹
     GameObject getBullet<T>()
    {
        int hashcode = typeof(T).GetHashCode();
        int TSleepBulletDic_ListCout = TSleepBulletDic[hashcode].Count;
        if (TSleepBulletDic.ContainsKey(hashcode))
        {
            for (int i = 0; i < TSleepBulletDic_ListCout; i++)
            {
                if (!TSleepBulletDic[hashcode][i].activeSelf)
                {
                     TSleepBulletDic[hashcode][i].transform.position
                       = _instanceConfig.BulletBornPosition<T>();
                   
                    TSleepBulletDic[hashcode][i].SetActive(true);
                    ActiveBulletList.Add(TSleepBulletDic[hashcode][i]);
                    BulletOverflow();
                    return TSleepBulletDic[hashcode][i];
                }
            }          
        }
        return null;
    }

如有需要,附百度云Unity Package下载地址:https://pan.baidu.com/s/1dFEnQUH 密码: tm6a

 

转载于:https://www.cnblogs.com/yikecaidechengzhangshi/p/7640577.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值