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)); }
/////////////////// //播放SoundData public int PlayMusic(AudioClip clip, SoundArgs args = null) { args = args ?? DEFAULT_MUSIC_ARGS; return(GetOrCreatePlayer(SoundType.Music).PlayForce(new SoundData() { clip = clip }, args)); }
///////////////////////////// /// <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)); }
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); }
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); }
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); }
public int PlayDirectly(SoundData data, SoundArgs args = null) { if (!IsTagCanPlay(args)) { return(-1); } if (!IsTagAtTime(args)) { return(-1); } return(PlaySound(data, args)); }
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)); } }
/////////////////// 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); }
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); }
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); }
private int PlaySound(SoundData data, SoundArgs args) { return(PlaySound(NewCommand(data, args))); }