/// <summary> /// 3d 사운드 재생(PlayAudioSourceAtPoint) /// </summary> public void PlayEffectSound(SoundClip clip, Vector3 position, float volume) { //찢어지는 사운드 방지(특정 채널 갯수 이하로만 재생) bool isPlaySuccess = false; for (int i = 0; i < this.EffectChannelCount; i++) { if (this.effect_audios[i].isPlaying == false) { PlayAudioSourceAtPoint(clip, position, volume); effect_PlayStartTime[i] = Time.realtimeSinceStartup; isPlaySuccess = true; break; } else if (this.effect_audios[i].clip == clip.GetClip()) { this.effect_audios[i].Stop(); PlayAudioSourceAtPoint(clip, position, volume); effect_PlayStartTime[i] = Time.realtimeSinceStartup; isPlaySuccess = true; break; } } if (isPlaySuccess == false) { PlayAudioSourceAtPoint(clip, position, volume); } }
void PlaySound(SoundClip clip) { if (source) { AudioClip c = clip.GetClip(); source.PlayOneShot(c); } }
/// <summary> /// 사운드 재생. /// </summary> void PlayAudioSource(AudioSource source, SoundClip m) { if (source == null) { return; } source.Stop(); source.clip = m.GetClip(); source.volume = m.maxVolume; source.loop = m.isLoop; source.pitch = m.pitch; source.dopplerLevel = m.dopplerLevel; source.rolloffMode = m.rollOffMode; source.minDistance = m.minDistance; source.maxDistance = m.maxDistance; source.spatialBlend = m.spatialBlend; source.Play(); }
void PlayAudioSource(AudioSource source, SoundClip clip, float volume) { if (source == null || clip == null) { return; } source.Stop(); source.clip = clip.GetClip(); source.volume = volume; source.loop = clip.isLoop; source.pitch = clip.pitch; source.dopplerLevel = clip.dopplerLevel; source.rolloffMode = clip.rolloffMode; source.minDistance = clip.minDistance; source.maxDistance = clip.maxDistance; source.spatialBlend = clip.spatialBlend; source.Play(); }
void PlayAudioSource(AudioSource _source, SoundClip _clip, float _volume) { if (_source == null || _clip == null) { Debug.LogWarning("Plz check this PlayAudioSource"); return; } _source.Stop(); _source.clip = _clip.GetClip(); _source.volume = _volume; _source.loop = _clip.isLoop; _source.pitch = _clip.pitch; _source.dopplerLevel = _clip.dopplerLevel; _source.rolloffMode = _clip.audioRolloffMode; _source.minDistance = _clip.minDistance; _source.maxDistance = _clip.maxDistance; _source.spatialBlend = _clip.spatialBlend; _source.Play(); }
public void PlayEffectSound(SoundClip clip) { //찢어지는 사운드 방지(특정 채널 갯수 이하로만 재생) bool isPlaySuccess = false; for (int i = 0; i < this.EffectChannelCount; i++) { if (this.effect_audios[i].isPlaying == false) { PlayAudioSource(this.effect_audios[i], clip, clip.maxVolume); effect_PlayStartTime[i] = Time.realtimeSinceStartup; isPlaySuccess = true; break; } else if (this.effect_audios[i].clip == clip.GetClip()) { this.effect_audios[i].Stop(); PlayAudioSource(this.effect_audios[i], clip, clip.maxVolume); effect_PlayStartTime[i] = Time.realtimeSinceStartup; isPlaySuccess = true; break; } } // 이미 EffectChannelCount만큼 이펙트 사운드가 진행중이라면, // 현잰 진행중인 EffectSound 중에서 가장 오래 진행된 것을 꺼버리고 새로운 clip 재생 if (isPlaySuccess == false) { float maxTime = 0.0f; int selectIndex = 0; for (int i = 0; i < EffectChannelCount; i++) //최대값 찾기 { if (effect_PlayStartTime[i] > maxTime) { maxTime = effect_PlayStartTime[i]; selectIndex = i; } } PlayAudioSource(effect_audios[selectIndex], clip, clip.maxVolume); } }
/// <summary> /// source를 clip, volume으로 세팅 /// </summary> void PlayAudioSource(AudioSource source, SoundClip clip, float volume) { if (source == null || clip == null) { Debug.LogError("SoundManager/PlayAudioSource source or clip is null"); return; } source.Stop(); source.clip = clip.GetClip(); source.volume = volume; source.pitch = clip.pitch; source.dopplerLevel = clip.dopplerLevel; source.rolloffMode = clip.rolloffMode; source.minDistance = clip.minDistance; source.maxDistance = clip.maxDistance; source.spatialBlend = clip.spatialBlend; source.Play(); }
void PlayAudioSource(AudioSource source, SoundClip clip, float volume) { if (source == null || clip == null) { Debug.LogWarning("Plz check this PlayAudioSource"); return; } source.Stop(); source.clip = clip.GetClip(); source.volume = volume; source.loop = clip.IsLoop; source.pitch = clip.Pitch; source.dopplerLevel = clip.DopplerLevel; source.rolloffMode = clip.audioRolloffMode; source.minDistance = clip.MinDistance; source.maxDistance = clip.MaxDistance; source.spatialBlend = clip.SpatialBlend; source.Play(); }
/// <summary> /// 이펙트 사운드 재생. /// </summary> void Play_EffectSound(SoundClip m) { bool isPlaySuccess = false; //가지고 있는 오디오 채널중에 플레이중이 아닌 채널을 찾아보거나. for (int idx = 0; idx < this.effectAudioChannelCount; idx++) { if (this.effect_audioSource[idx].isPlaying == false) { PlayAudioSource(this.effect_audioSource[idx], m); this.Effect_PlayStartTime[idx] = Time.realtimeSinceStartup; isPlaySuccess = true; break; } else if (this.effect_audioSource[idx].clip == m.GetClip()) { //같은 사운드가 거의 동시에 재생하여야 하는 경우 특정 폰의 경우 소리가 클리핑이나 피크 현상이 발생. //기존 사운드를 멈췄다가 다시 재생하는게 덜 어색할지도. this.effect_audioSource[idx].Stop(); PlayAudioSource(this.effect_audioSource[idx], m); this.Effect_PlayStartTime[idx] = Time.realtimeSinceStartup; isPlaySuccess = true; break; } } if (isPlaySuccess == false) { float standTime = 0.0f; int selectIndex = 0; for (int idx = 0; idx < this.effectAudioChannelCount; idx++) { if (this.Effect_PlayStartTime[idx] > standTime) { standTime = this.Effect_PlayStartTime[idx]; selectIndex = idx; } } PlayAudioSource(this.effect_audioSource[selectIndex], m); } }
public void PlayEffectSound(SoundClip clip) { bool isPlaySuccess = false; for (int i = 0; i < effectChannelCount; i++) { if (effect_audios[i].isPlaying == false) { PlayAudioSource(effect_audios[i], clip, clip.maxVolume); effect_PlayStartTime[i] = Time.realtimeSinceStartup; isPlaySuccess = true; break; } else if (effect_audios[i].clip == clip.GetClip()) { effect_audios[i].Stop(); PlayAudioSource(effect_audios[i], clip, clip.maxVolume); effect_PlayStartTime[i] = Time.realtimeSinceStartup; isPlaySuccess = true; break; } } if (isPlaySuccess == false) { float maxTime = 0.0f; int selectIndex = 0; for (int i = 0; i < effectChannelCount; i++) { if (effect_PlayStartTime[i] > maxTime) { maxTime = effect_PlayStartTime[i]; selectIndex = i; } } PlayAudioSource(effect_audios[selectIndex], clip, clip.maxVolume); } }
void PlayAudioSourceAtPoint(SoundClip clip, Vector3 position, float volume) { AudioSource.PlayClipAtPoint(clip.GetClip(), position, volume); }