萌熊跑酷学习(二)单例模板的实现以及音效的单例模式

单例模板

public class MonoSingleton<T> : MonoBehaviour
    where T:MonoBehaviour
{
    private static T m_instance;

    public static T Instance
    {
        get
        {
            return m_instance;
        }
    }
    protected virtual void Awake()
    {
        m_instance = this as T;
    }
}

音效单例的实现

  • 项目中需要播放两种音效,背景音效以及一些其他效果音效,所以需要两个AudioSouce
  • 播放背景音乐,需要进行判断是否需要切换。如果要播放的音效和当前正在播放的音效一致,则不需要更换音效,发之切换音效。
  • 效果音效只需要名字和资源加载路径一起组合成新的路径,使用Resource加载进行播放就可以了。
public class Sound : MonoSingleton<Sound>
{
    AudioSource m_Bg;
    AudioSource m_Effect;
    public string ResourcesDir="";//资源加载路径 在外部进行赋值

    protected override void Awake()
    {
        base.Awake();
        m_Bg = gameObject.AddComponent<AudioSource>();
        m_Bg.playOnAwake = false;
        m_Bg.loop = true;

        m_Effect = gameObject.AddComponent<AudioSource>();
    }

    public void PlayBg(string audioName)
    {
        string oldName;//临时变量,正在播放的音效名字
        if (m_Bg.clip==null)//如果当前没有在播放音效
        {
            oldName = "";
        }
        else
        {
            oldName = m_Bg.clip.name;//在播放就得到名字
        }
        if (oldName!=audioName)//判断要播放的和正在播放的音效名字是否一致
        {
            //不一致
            string path = ResourcesDir + "/" + audioName;//新的路径
            AudioClip clip = Resources.Load<AudioClip>(path);
            if (clip!=null)
            {
                m_Bg.clip = clip;
                m_Bg.Play();
            }
        }
    }
    public void PlayEffect(string audioName)
    {
        string path = ResourcesDir + "/" + audioName;
        AudioClip clip = Resources.Load<AudioClip>(path);
        m_Effect.PlayOneShot(clip);
    }
}

在这里插入图片描述在这里插入图片描述
有需要学习视频欢迎关注微信公众号

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值