public async void PlayEffect(string key, Vector3 worldPos) { GameObject musicPlayer = await AssetManager.SpawnAsync("Music/MusicPlayer.prefab"); musicPlayer.transform.position = worldPos; AudioSource audioSource = musicPlayer.GetComponent <AudioSource>(); var clip = await AssetManager.LoadAssetAsync <AudioClip>("Music/" + key + ".WAV"); audioSource.PlayOneShot(clip); musicPlayer.DoDelay(clip.length).OnComplete(() => { AssetManager.DeSpawn(musicPlayer); }); }
public async void PlayAnimEffect(AnimEffectData animEffectData, Vector3 position, float rendererAngle = 0, bool flip = false, Vector3 moveOrientation = default(Vector3), Transform transform_ = null, float delayTime = 0, Action <AnimEffectController> callback = null) { if (animEffectData.animEffectType == AnimEffectData.AnimEffectType.Group) { foreach (var item in animEffectData.animEffectList) { AnimEffectData aed = animEffectData.animEffectDataList.Find((AnimEffectData aed_) => { return(item.id.ToLower() == aed_.id.ToLower()); }); if (aed != null) { PlayAnimEffect(aed, position, rendererAngle, flip, moveOrientation, transform_, item.delayTime, callback); } else { PlayAnimEffect(item.id, position, rendererAngle, flip, moveOrientation, transform_, item.delayTime, callback); } } } else if (animEffectData.animEffectType == AnimEffectData.AnimEffectType.Random) { int index = Tools.RandomWithWeight(animEffectData.animEffectList, (AnimEffectData.AnimEffectRef ar, int i) => { return(ar.weight); }); if (index >= 0) { AnimEffectData aed = animEffectData.animEffectDataList.Find((AnimEffectData aed_) => { return(animEffectData.animEffectList[index].id.ToLower() == aed_.id.ToLower()); }); if (aed != null) { PlayAnimEffect(aed, position, rendererAngle, flip, moveOrientation, transform_, animEffectData.animEffectList[index].delayTime, callback); } else { PlayAnimEffect(animEffectData.animEffectList[index].id, position, rendererAngle, flip, moveOrientation, transform_, animEffectData.animEffectList[index].delayTime, callback); } } else { Debug.Log("找不到随机动画: " + animEffectData.id); } } else { this.DelayToDo(delayTime, async() => { GameObject animEffectObject = await AssetManager.SpawnAsync("Effect/AnimEffect.prefab"); if (transform_ != null) { switch (animEffectData.parentType) { case FrameEventInfo.ParentType.Parent: animEffectObject.transform.parent = transform_.parent; break; case FrameEventInfo.ParentType.Transform: animEffectObject.transform.parent = transform_; break; default: animEffectObject.transform.parent = transform_.parent; break; } } var animEffectController = animEffectObject.GetComponent <AnimEffectController>(); animEffectController.animEffectData = animEffectData; animEffectController.animEffectData.rotation.z += rendererAngle; animEffectController.MoveFlip = flip; animEffectController.Orientation = moveOrientation; animEffectObject.transform.position = position; animEffectController.PlayAnim(animEffectData); // 回调 add by TangJian 2019/5/16 15:51 callback?.Invoke(animEffectController); }); } }