单例:单例形式有两种,一种是继承mono的单例,一种是不继承mono的单例 继承mono的单例 using UnityEngine; using System.Collections; public abstract class MonoSingleton<T> : MonoBehaviour where T : MonoSingleton<T> { #region 单例 private static T instance; public static T Instance { get { if (instance == null) { GameObject obj = new GameObject (typeof(T).Name); instance = obj.AddComponent<T> (); } return instance; } } #endregion protected virtual void Awake () { instance = this as T; } } 不继承mono的单例 using UnityEngine; using System.Collections; public abstract class Singleton<T> : System.IDisposable where T : new() { private static T instance; public static T Instance { get { if (instance == null) { instance = new T (); } return instance; } } public virtual void Dispose () { } }
音效管理类 using UnityEngine; using System.Collections; public class MusicMgr : MonoSingleton<MusicMgr> { // 播放背景音乐 private AudioSource m_bgMusic; // 播放音效 private AudioSource m_effectMusic; // 控制音量大小 public float BgVolume { get{ return m_bgMusic.volume; } set{ m_bgMusic.volume = value; } } public float EffectVolmue { get{ return m_effectMusic.
音效管理类和资源管理类
最新推荐文章于 2021-12-07 16:43:47 发布
本文介绍了在Unity引擎中实现音效管理和资源管理的两种单例模式:继承MonoBehaviour的单例和不继承Mono的单例。具体展示了如何创建AudioSource组件来播放背景音乐和音效,并通过ResourcesMgr类按路径加载资源。此外,还提供了针对不同场景的音乐播放方法和枚举类型以便于资源定位。
摘要由CSDN通过智能技术生成