/// <summary>
    /// 创建掉落物协议
    /// </summary>
    /// <param name="respond"></param>
    public void CreateDropItemByRespond(s2cSyncPersonalDrop respond)
    {
        if (respond.DropList.Count <= 0)
        {
            /// Debug.Log("CreateDropItemByRespond:the drop_list.Count <= 0");
            return;
        }

        if (respond.IsMapSync == false)
        {
            int index = Random.Range(0, 2);
            WwiseUtil.PlaySound(WwiseManager.voiceComboID, index == 0 ? WwiseMusicSpecialType.SpecialType_Voice_minera_event3 : WwiseMusicSpecialType.SpecialType_Voice_minera_event4, WwiseMusicPalce.Palce_1st, false, null);
        }

        ulong parentid = 0;

        foreach (var item in respond.DropList)
        {
            string key = item.MapId.ToString() + item.AreaUid.ToString() + item.ChestNpcUid.ToString();
            if (!m_GatherDropItemInfos.ContainsKey(key))
            {
                MineDropItemInfo mineDropItemInfo = new MineDropItemInfo();
                mineDropItemInfo.mapid     = item.MapId;
                mineDropItemInfo.areaid    = item.AreaUid;
                mineDropItemInfo.uid       = item.ChestNpcUid;
                mineDropItemInfo.tid       = item.ChestNpcTid;
                mineDropItemInfo.item_tid  = item.DropItemTid;
                mineDropItemInfo.ship_tlv  = item.ShipTlv;
                mineDropItemInfo.parentid  = item.FromHeroUid;
                mineDropItemInfo.positon_x = item.PositonX;
                mineDropItemInfo.positon_y = item.PositonY;
                mineDropItemInfo.positon_z = item.PositonZ;
                if (parentid == 0)
                {
                    parentid = mineDropItemInfo.parentid;
                }

                uint  mapId  = m_CfgEternityProxy.GetCurrentMapData().GamingmapId;
                ulong aredId = m_GameplayProxy.GetCurrentAreaUid();

                if (mapId == item.MapId && aredId == item.AreaUid)
                {
                    CreateDropItem(key, mineDropItemInfo, respond.IsMapSync == false);
                }
            }
        }

        /// 新掉落播音效
        if (respond.IsDieDrop == false && respond.IsMapSync == false && parentid != 0)
        {
            SpacecraftEntity spacecraftEntity = m_GameplayProxy.GetEntityById <SpacecraftEntity>((uint)parentid);
            spacecraftEntity.SendEvent(ComponentEventName.PlayDropSound, null);
        }
    }
    private void DestoryDropInfo(string key, bool clearInfo = true)
    {
        MineDropItemInfo gatherDropItemInfo = m_GatherDropItemInfos[key];

        if (gatherDropItemInfo.obj != null)
        {
            DestroyGameObject(ref gatherDropItemInfo.obj);
        }

        if (clearInfo)
        {
            m_GatherDropItemInfos.Remove(key);
        }
    }
    IEnumerator PickUpEffect(string key, MineDropComponent mineDropComponent)
    {
        mineDropComponent.AddEffect();

        MineDropItemInfo gatherDropItemInfo = m_GatherDropItemInfos[key];

        if (gatherDropItemInfo.obj != null)
        {
            gatherDropItemInfo.obj.SetActive(false);
        }

        yield return(new WaitForSeconds(3.0f));

        DestoryDropInfo(key);
    }
    private void CreateDropItem(string key, MineDropItemInfo mineDropItemInfo, bool needFly = false)
    {
        NpcCombat?nc = m_CfgEternityProxy.GetNpcCombatByKey(mineDropItemInfo.tid);

        if (!nc.HasValue)
        {
            return;
        }

        PackageBoxAttr?pb = m_CfgEternityProxy.GetPackageBoxAttrByModelIdAndGrade((uint)nc.Value.BoxModel, mineDropItemInfo.ship_tlv);

        if (!pb.HasValue)
        {
            return;
        }

        int   modelid = pb.Value.BoxModel;
        Model?mdata   = m_CfgEternityProxy.GetModel(modelid);

        if (mdata.Value.AssetName.Equals(string.Empty))
        {
            return;
        }

        Vector3          curPos = Vector3.zero;
        SpacecraftEntity spe    = m_GameplayProxy.GetEntityById <SpacecraftEntity>((uint)mineDropItemInfo.parentid) as SpacecraftEntity;

        if (spe)
        {
            curPos = spe.GetRootTransform().position;
        }

        AssetUtil.InstanceAssetAsync(mdata.Value.AssetName, (address, uObj, userData) =>
        {
            mineDropItemInfo.obj = uObj as GameObject;
            MineDropComponent mineDropComponent = mineDropItemInfo.obj.GetComponent <MineDropComponent>();
            if (!mineDropComponent)
            {
                mineDropComponent = mineDropItemInfo.obj.AddComponent <MineDropComponent>();
            }

            SpacecraftEntity mainPlayer = m_GameplayProxy.GetMainPlayer();
            mineDropComponent.Initialize(mainPlayer, mineDropItemInfo.uid, mineDropItemInfo.tid, mineDropItemInfo.item_tid, pb);
            if (needFly)
            {
                mineDropItemInfo.obj.transform.position = curPos;
                mineDropComponent.AddFlyEffect(mineDropItemInfo.positon_x, mineDropItemInfo.positon_y, mineDropItemInfo.positon_z);
            }
            else
            {
                Vector3 endPos         = new Vector3(mineDropItemInfo.positon_x, mineDropItemInfo.positon_y, mineDropItemInfo.positon_z);
                Vector3 clientPosition = m_GameplayProxy.ServerAreaOffsetToClientPosition(endPos);
                mineDropItemInfo.obj.transform.position = clientPosition;
                mineDropComponent.SetDropItemState(DropItemState.Stay);
                mineDropComponent.AddEffect(true);
            }

            /// 跃迁客户端不清数据
            if (m_GatherDropItemInfos.ContainsKey(key))
            {
                m_GatherDropItemInfos.Remove(key);
            }
            m_GatherDropItemInfos.Add(key, mineDropItemInfo);
        });
    }