コード例 #1
0
ファイル: AudioManager.cs プロジェクト: GameForMe/CardGame
    //确定下 3D 音效 衰减属性;
    void DecideSpreadProp(AudioSource source, Sound3DData soundData)
    {
        if (soundData.SoundLv == 0)           //默认的 衰减属性  级别;
        {
            source.minDistance = 1f;
            source.maxDistance = 18f;
        }
        if (soundData.SoundLv == 1)           // 级别 1 ;
        {
            source.minDistance = 1f;
            source.maxDistance = 21f;
        }
        if (soundData.SoundLv == 2)           // 级别 2 ;
        {
            source.minDistance = 1f;
            source.maxDistance = 22f;
        }
        if (soundData.SoundLv == 3)           // 级别 3 ;
        {
            source.minDistance = 1f;
            source.maxDistance = 23f;
        }


        //最后 再数据 匹配一次; (如有 设定的 有效数据的 话;)
        if (soundData.SoundMinDist > 0)
        {
            source.minDistance = soundData.SoundMinDist;
        }
        if (soundData.SoundMaxDist > 0)
        {
            source.maxDistance = soundData.SoundMaxDist;
        }
    }
コード例 #2
0
ファイル: AudioManager.cs プロジェクト: GameForMe/CardGame
    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);
        }
    }
コード例 #3
0
ファイル: AudioManager.cs プロジェクト: GameForMe/CardGame
    /// <summary>
    /// Play3s the D audio.
    /// </summary>
    /// <param name="audioname">Audioname.</param>
    /// <param name="transfPosi">Transf posi.</param>
    /// <param name="position">Position.</param>
    /// <param name="volume">Volume.</param>  自己的 原生 声音大小;
    /// <param name="isLoop">If set to <c>true</c> is loop.</param>
    /// <param name="soundTp">Sound tp.</param>
    /// <param name="soundData">Sound data.</param>
    public void Play3DAudio(string audioname, Transform transfPosi, Vector3 position, float volume, bool isLoop, int soundTp, Sound3DData soundData)
    {
        if (audioname.Equals(""))
        {
            return;
        }

        AudioClip clip = (AudioClip)Resources.Load(BattleAudio + audioname, typeof(AudioClip));       //调用Resources方法加载AudioClip资源

        Play3DAudioClip(audioname, clip, transfPosi, position, volume, isLoop, soundTp, soundData);
    }