/// <summary> /// Sets the bat audio vol. /// //重新 设置 战场音效 大小; /// </summary> /// <param name="volumeRate">Volume rate.</param> public void SetBatAudioVol(float volumeRate) { battleVolmRate = volumeRate; // //遍历 所有 当前声音源; for (int i = 0; i < BatAudioSrcList.Count; i++) { if (BatAudioSrcList [i] != null) { audio3Dctrl tmpCtrl = (BatAudioSrcList [i].transform.gameObject).GetComponent <audio3Dctrl>(); BatAudioSrcList [i].volume = tmpCtrl.OriginalVolume * battleVolmRate; } } }
void Play3DAudioClip(string audioname, AudioClip clip, Transform transfPosi, Vector3 position, float volume, bool isLoop, int soundTp, Sound3DData soundData) { if (clip == null) { return; } //已经有了的话; if (transfPosi.Find(audioname) != null) { if (isLoop) { //循环中的话, 不做处理; return; } else { // 不循环的话, 接着新增,往下走, 即时性 触发; } } GameObject go = new GameObject(audioname); go.transform.position = position; go.transform.parent = transfPosi; audio3Dctrl tmpCtrl = go.AddComponent <audio3Dctrl>(); tmpCtrl.AudioName = audioname; // tmpCtrl.OriginalVolume = volume; // //原生 音量 大小; tmpCtrl.SoundType = soundTp; // AudioSource source = go.AddComponent <AudioSource>(); source.clip = clip; source.volume = tmpCtrl.OriginalVolume * battleVolmRate; //最后的音量为: 原生 音量 大小 * curVolumeRate; source.spatialBlend = 1.0f; //3d效果的 设定; // source.minDistance = 1f; // source.maxDistance = 20f; //目前,此处暂定为 该定值, 后期有要求,可动态 根据数据 传递; //确定下 3D 音效 衰减属性; DecideSpreadProp(source, soundData); source.spread = 180f; source.rolloffMode = AudioRolloffMode.Linear; source.Play(); // BatAudioSrcList.Add(source); //// 不循环的话, 接着新增,往下走, 即时性 触发; if (isLoop) { source.loop = true; } else { Destroy(go, clip.length); } }