// 参数:clipName,僵尸声音类型,僵尸Transform,延迟,声音大小,音调 public static void Play(string clipName, ZombieAudioType type, Transform zombieTrans, float delay, float volMul, float pitch) { if (Profile.soundEnable) { int index = (int)type; string key = clipName + index; if (!clipInfoDict.ContainsKey(key)) { TypeInfo info = typeInfoArray[index]; if ((info.current < info.max) && (Time.realtimeSinceStartup >= (info.lastCallTime + info.interval))) { AudioClip clip = AudioClipManager.GetClip(clipName); if (clip == null) { Debug.Log("no clip" + clipName); } else { ClipInfo clipInfo = new ClipInfo { zombieTrans = zombieTrans, name = clipName, type = type, playTime = Time.realtimeSinceStartup, delay = delay, volMul = volMul, pitch = pitch }; info.current++; info.lastCallTime = Time.realtimeSinceStartup; // 如果没有延迟,直接播放,有延迟在update中处理 if (clipInfo.delay <= 0f) { AudioSource source = new GameObject("Audio:" + clipName) { transform = { parent = root } }.AddComponent <AudioSource>(); source.clip = clip; source.volume = clipInfo.volMul * info.volumeMul; source.loop = false; float num2 = Mathf.Clamp(Time.timeScale, 0.75f, 1f); source.pitch = clipInfo.pitch * num2; clipInfo.length = clip.length / source.pitch; clipInfo.audioSource = source; source.Play(); SpecialDeal(clipInfo); } clipInfoDict.Add(key, clipInfo); } } } } }
public static void Play(string clipName, ZombieAudioType type, float delay) { Play(clipName, type, null, delay, 1f, RandomPitch); }
public static void Play(string clipName, ZombieAudioType type, Transform zombieTrans, float delay) { Play(clipName, type, zombieTrans, delay, 1f, RandomPitch); }
public static void Play(string clipName, ZombieAudioType type) { Play(clipName, type, null, 0f, 1f, RandomPitch); }