private void LoadPartAssetAsync(SceneObjectEntity sceneObjectEntity, AssetInfo assetInfo,
                                 PartAssetData partAssetData)
 {
     sceneObjectEntity.weaponAttachment.PartAssetDict[assetInfo] = partAssetData;
     if (sceneObjectEntity.multiUnityObject.AddLoadingAssets(assetInfo))
     {
         _assetManager.LoadAssetAsync(sceneObjectEntity, assetInfo, weaponLoadHandler.OnLoadPartObjectSucess);
     }
     else
     {
         weaponLoadHandler.OnLoadPartObjectSucess(sceneObjectEntity,
                                                  sceneObjectEntity.multiUnityObject.LoadedAssets[assetInfo]);
     }
 }
        private void LoadWeaponObject(SceneObjectEntity sceneObjectEntity, WeaponResConfigItem weaponCfg)
        {
            var avatarId = weaponCfg.AvatorId;

            if (sceneObjectEntity.weaponObject.WeaponAvatarId > 0)
            {
                avatarId = sceneObjectEntity.weaponObject.WeaponAvatarId;
            }
            AssetInfo thdPersonAsset = SingletonManager.Get <WeaponAvatarConfigManager>().GetThirdPersonWeaponModel(avatarId);

            if (!sceneObjectEntity.hasMultiUnityObject)
            {
                sceneObjectEntity.AddMultiUnityObject();
            }
            else
            {
                sceneObjectEntity.multiUnityObject.Prepare();
            }
            if (!sceneObjectEntity.hasWeaponAttachment)
            {
                sceneObjectEntity.AddWeaponAttachment();
            }
            else
            {
                sceneObjectEntity.weaponAttachment.Reset();
            }
            LoadNecessaryAssetAsync(sceneObjectEntity, thdPersonAsset);
            List <int> weaponParts = sceneObjectEntity.weaponObject.CollectParts();

            for (int i = 0; i < weaponParts.Count; i++)
            {
                AssetInfo partAssetInfo = SingletonManager.Get <WeaponPartsConfigManager>().GetAsset(weaponParts[i]);
                var       partAssetData = new PartAssetData();
                partAssetData.PartId       = weaponParts[i];
                partAssetData.PartSlotType = (int)SingletonManager.Get <WeaponPartsConfigManager>().GetPartType(weaponParts[i]);
                LoadPartAssetAsync(sceneObjectEntity, partAssetInfo, partAssetData);
            }

            //加载特效
            List <AssetInfo> effectAssetInfo =
                SingletonManager.Get <WeaponAvatarConfigManager>().GetEffectAsset(avatarId);

            foreach (var effect in effectAssetInfo)
            {
                LoadEffectAssetAsync(sceneObjectEntity, effect);
            }

            sceneObjectEntity.effects.AddGlobalEffect(GlobalEffectManager.GlobalGroundPropFlash);
        }