Beispiel #1
0
    /// <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;
            }
        }
    }
Beispiel #2
0
    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);
        }
    }