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); }