public bool Touch(SoundOne soundone) { soundone.audio.clip = null; soundone.SetEndHandler(null); if((Time.time - m_lastTouchTime) < m_touchGap) return false; if (m_usedCount >= m_maxInstanceCount) return false; if (!m_loading && m_clip == null) return false; if (m_loading) { m_deferGetSounds.Add(soundone); } else { soundone.audio.clip = m_clip; } soundone.gameObject.name = SoundName; soundone.SetEndHandler(OnSoundLifeEnd); ++m_usedCount; Transform trans = soundone.transform; trans.localPosition = Vector3.zero; trans.localRotation = Quaternion.identity; trans.localScale = Vector3.one; m_lastTouchTime = Time.time; return true; }
void OnSoundLifeEnd(SoundOne soundone, bool isDestroy) { --m_usedCount; //Debug.Log("OnSoundLifeEnd ......"); lastReleaseTime = Time.time; soundone.audio.clip = null; soundone.SetEndHandler(null); if(isDestroy == false) SoundCacheMan.Instance.GiveBack(soundone); }
public void GiveBack(SoundOne soundone) { soundone.gameObject.name = "sound"; soundone.transform.parent = m_unusedSoundOne; soundone.gameObject.SetActive(false); }