Beispiel #1
0
        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);
            });
        }
Beispiel #2
0
        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);
                });
            }
        }