Beispiel #1
0
        public int PlayForce(SoundData data, SoundArgs args = null)
        {
            if (!IsTagCanPlay(args))
            {
                return(-1);
            }

            if (!IsTagAtTime(args))
            {
                return(-1);
            }

            if (Time.realtimeSinceStartup < m_lastTick + interval)
            {
                return(-1);
            }

            while (maxCount >= 0 && m_playingSounds.Count >= maxCount)
            {
                //找到一个播放最久的踢掉
                KickoutOneSound(true);
            }

            return(PlaySound(data, args));
        }
Beispiel #2
0
 ///////////////////
 //播放SoundData
 public int PlayMusic(AudioClip clip, SoundArgs args = null)
 {
     args = args ?? DEFAULT_MUSIC_ARGS;
     return(GetOrCreatePlayer(SoundType.Music).PlayForce(new SoundData()
     {
         clip = clip
     }, args));
 }
Beispiel #3
0
        /////////////////////////////

        /// <summary>
        /// 短暂的音效
        /// 无法暂停
        /// </summary>
        public int PlayEffect(AudioClip clip, SoundArgs args = null)
        {
            args = args ?? DEFAULT_EFFECT_ARGS;
            return(GetOrCreatePlayer(SoundType.Effect).Play(new SoundData()
            {
                clip = clip
            }, args));
        }
Beispiel #4
0
        private SoundCommand NewCommand(SoundData data, SoundArgs args)
        {
            var command = GetOrCreateSoundCommonCache().GetOrCreate();

            command.id   = ++m_id;
            command.data = data;
            command.args = args ?? DEFAULT_ARGS;

            return(command);
        }
Beispiel #5
0
 private bool IsTagCanPlay(SoundArgs args)
 {
     if (args != null)
     {
         if (!string.IsNullOrEmpty(args.tag))
         {
             var curCount = GetCurTagCount(args.tag);
             var maxCount = GetTagMaxCount(args.tag);
             return(curCount < maxCount);
         }
     }
     return(true);
 }
Beispiel #6
0
 private bool IsTagAtTime(SoundArgs args)
 {
     if (args != null)
     {
         if (!string.IsNullOrEmpty(args.tag))
         {
             var curTick     = GetCurTagTick(args.tag);
             var tagInterval = GetTagInterval(args.tag);
             return(Time.realtimeSinceStartup >= curTick + tagInterval);
         }
     }
     return(true);
 }
Beispiel #7
0
        public int PlayDirectly(SoundData data, SoundArgs args = null)
        {
            if (!IsTagCanPlay(args))
            {
                return(-1);
            }

            if (!IsTagAtTime(args))
            {
                return(-1);
            }

            return(PlaySound(data, args));
        }
Beispiel #8
0
        public int PlayWait(SoundData data, SoundArgs args = null)
        {
            if (!IsTagCanPlay(args))
            {
                return(-1);
            }

            if (maxCount >= 0 && m_playingSounds.Count >= maxCount || Time.realtimeSinceStartup < m_lastTick + interval || !IsTagAtTime(args))
            {
                return(PushSound(data, args));
            }
            else
            {
                return(PlaySound(data, args));
            }
        }
Beispiel #9
0
        ///////////////////

        public int PlayList(SoundData data = null, SoundArgs args = null)
        {
            if (!IsTagCanPlay(args))
            {
                return(-1);
            }

            if (!IsTagAtTime(args))
            {
                return(-1);
            }

            var id = PushSound(data, args);

            m_isAbort = false;
            return(id);
        }
Beispiel #10
0
        private int PushSound(SoundData data, SoundArgs args)
        {
            if (data == null)
            {
                return(-1);
            }
            if (data.clip == null)
            {
                return(-1);
            }

            SoundCommand command = NewCommand(data, args);

            m_readingSounds.AddLast(command);

            return(command.id);
        }
Beispiel #11
0
        public int Play(SoundData data, SoundArgs args = null)
        {
            if (!IsTagCanPlay(args))
            {
                return(-1);
            }

            if (Time.realtimeSinceStartup < m_lastTick + interval)
            {
                return(-1);
            }

            if (maxCount < 0 || m_playingSounds.Count < maxCount)
            {
                return(PlaySound(data, args));
            }
            return(-1);
        }
Beispiel #12
0
 private int PlaySound(SoundData data, SoundArgs args)
 {
     return(PlaySound(NewCommand(data, args)));
 }