//从待拾取装备列表添加装备到背包中
        void AddItemFromColect(object equipItem)
        {
            //将equiipItem类型转变为bagItemInfo

            //Debug.Log("开始挂载");
            BaseItem it = (BaseItem)equipItem;

            if (it.type == EquipType.weapon_gun || it.type == EquipType.weapon_steel)
            {
                DataBaseManager.GunDBItem gunItem = DataBaseManager.Instance.GunItemDic[it.id];
                Debug.Log(gunItem.prefabPath);
                AddGun(gunItem);
            }
            else
            {
                AddItem((BaseItem)equipItem);
            }
        }
        //添加装备,主武器
        public bool AddGun(DataBaseManager.GunDBItem it)
        {
            //查看主武器槽的挂载情况
            int firstEmptySlot = -1;
            int slotCount      = m_equipModel.gunSlots.Count;

            for (int i = 0; i < slotCount; i++)
            {
                if (m_equipModel.gunSlots[i].isEmpty == true)
                {
                    firstEmptySlot = i;
                    break;
                }
            }

            //有空位
            if (firstEmptySlot != -1)
            {
                //初始化item并挂载
                InitGunItem(it, firstEmptySlot);
            }
            //没有空位,此时可以确定每个槽都挂载了item
            else
            {
                //最后一个武器出队
                Debug.Log("没有空位了");
                GunItem lastItem = m_equipModel.gunItems[slotCount - 1];
                //将物体放回场景中
                Debug.Log(lastItem.id);
                Vector3 pos = AvatarInfoManager.Instance.GetAvatarTransform().position;
                ResManager.Instance.CreateGameObject(lastItem.ScenePrefabPath,
                                                     new Vector3(pos.x, -0.8f, pos.z), new PickInfo(lastItem.id, null, lastItem.type));
                //被丢弃的枪支内的装备放回背包中
                var equipList = lastItem.equipItems.GetEnumerator();
                while (equipList.MoveNext())
                {
                    Debug.Log("equipItems Keys:" + equipList.Current.Key);
                    EquipItemToBagItem(lastItem, equipList.Current.Key, false);
                }
                //删除物体
                GameObject.Destroy(lastItem.slotTrans.gameObject);
                //从字典中移除
                m_equipModel.gunItems.Remove(slotCount);
                //从后往前进行数据交换
                for (int i = slotCount - 2; i >= 0; i--)
                {
                    GunItem item = new GunItem(m_equipModel.gunItems[i]);
                    //Debug.Log(i+"  "+item.name);
                    m_equipModel.gunItems[i + 1] = item;
                    //更新枪支装备槽的parentId,parentId记录字典key值
                    var enumerator = item.equipSlots.GetEnumerator();
                    while (enumerator.MoveNext())
                    {
                        enumerator.Current.Value.info.parentId = i + 1;
                    }
                    //重新挂载
                    item.slotTrans.SetParent(m_equipModel.gunSlots[i + 1].transform, false);
                    item.slotTrans.localPosition = Vector3.zero;
                    //更新人物枪支数值
                    LiteEventManager.Instance.TriggerEvent(EquipType.weapon_gun,
                                                           new ValueInfo <int, int, float, int>(i + 1, item.hurtNum, item.steadyNum, item.capacity));
                }
                //将新加入的item挂载在第一个槽上
                InitGunItem(it, 0);
            }
            //测试
            //var enumerator = m_equipModel.gunItems.GetEnumerator();
            //while (enumerator.MoveNext())
            //{
            //    Debug.Log("第" + enumerator.Current.Key.ToString() + "个item:" + m_equipModel.gunItems[enumerator.Current.Key].name);
            //}
            return(true);
        }
        //根据传入it的信息,初始化一个gunItem,slotNum为挂载在第几个槽
        private void InitGunItem(DataBaseManager.GunDBItem it, int slotNum)
        {
            //实例化gunItem
            GameObject obj = ResManager.Instance.LoadPrefabFromRes("Prefab/GunItem", true);
            Text       tx  = obj.transform.GetChild(0).GetComponent <Text>();

            tx.text = it.name;
            //加载枪械图片
            Sprite sprite = ResManager.Instance.LoadSpriteFromRes(it.imagePath);
            Image  img    = obj.transform.GetChild(1).GetComponent <Image>();

            img.sprite = sprite;

            Transform partList = obj.transform.GetChild(2);
            //初始化item对应的装备槽数据
            List <EquipType> type = it.equipList;
            int equipListCount    = type.Count;
            //装备槽位对照表
            List <EquipType> allEquipType = new List <EquipType>()
            {
                EquipType.equip_butt, EquipType.equip_magazine,
                EquipType.equip_handle, EquipType.equip_muzzle, EquipType.equip_scope
            };

            Dictionary <int, EquipSlot> equipSlotDic = new Dictionary <int, EquipSlot>();

            //不同的枪所能挂载的配件不同,能显示的装备槽数量也不同
            for (int i = 0; i < 5; i++)
            {
                Transform part = partList.GetChild(i);
                //给每个槽的parentId赋值
                part.GetComponent <BagGrIdIns>().parentId = slotNum;
                for (int j = 0; j < equipListCount; j++)
                {
                    if (type[j] == allEquipType[i])
                    {
                        //将这个槽显示出来
                        part.gameObject.SetActive(true);
                        //加入装备槽字典
                        equipSlotDic.Add(i, new EquipSlot(part, i, slotNum, type[j]));
                    }
                }
            }
            //正式挂载
            //物理挂载
            obj.transform.SetParent(m_equipModel.gunSlots[slotNum].transform, false);
            obj.transform.localPosition = Vector3.zero;
            //数据挂载
            GunItem item = new GunItem(obj.transform, equipSlotDic, it.name, it.id, it.weaponType, it.hurtNum, it.steadyNum, it.prefabPath, it.bulletCap);

            Debug.Log("prefabPath:" + item.ScenePrefabPath);
            if (m_equipModel.gunItems.TryGetValue(slotNum, out GunItem element))
            {
                m_equipModel.gunItems[slotNum] = item;
            }
            else
            {
                m_equipModel.gunItems.Add(slotNum, item);
            }
            //触发更新人物枪支数据
            Debug.Log("槽数:" + slotNum);
            LiteEventManager.Instance.TriggerEvent(EquipType.weapon_gun,
                                                   new ValueInfo <int, int, float, int>(slotNum, it.hurtNum, it.steadyNum, it.bulletCap));
            //挂载完成,将该槽设置为已挂载
            m_equipModel.gunSlots[slotNum].isEmpty = false;
        }