栖霞企业网站建设源码库官网
news/
2025/9/24 2:49:12/
文章来源:
栖霞企业网站建设,源码库官网,现在做网络推广好做吗,湖北鼎天宏图建设工程有限公司网站【Unity】单例模式及游戏声音管理类应用
描述
在日常游戏项目开发中#xff0c;单例模式是一种常用的设计模式#xff0c;它允许在应用程序的生命周期中只创建一个对象实例#xff0c;并提供对该实例的全局访问点。通过使用单例模式#xff0c;可以提高代码的可维护性和可…【Unity】单例模式及游戏声音管理类应用
描述
在日常游戏项目开发中单例模式是一种常用的设计模式它允许在应用程序的生命周期中只创建一个对象实例并提供对该实例的全局访问点。通过使用单例模式可以提高代码的可维护性和可重用性。
单例写法
通过创建一个泛型Singleton类可以让全局功能类继承从而使全局功能类都具备单例特性。这样做可以避免在全局功能类之间书写重复的代码让代码更加精简和易于维护。
错误写法this类型无法转化为泛型 正确写法让泛型T继承MonoBehaviour
Singleton类继承MonoBehaviour而且 泛型T 也继承MonoBehaviour故[this]才能转换为泛型类[T]。
代码如下
using UnityEngine;public abstract class SingletonT : MonoBehaviourwhere T : MonoBehaviour
{private static T instance;public static T Instance { get { return instance; } }protected virtual void Awake(){instance this as T;}
}声音管理类
继承Singleton类使得声音管理类成为单例提高代码的可维护性和重用性。
代码如下
using UnityEngine;public class SoundManager : SingletonSoundManager {public string resourcesDir sound;private AudioSource musicAu;private AudioSource soundAu;protected override void Awake(){base.Awake();DontDestroyOnLoad(this);musicAu gameObject.AddComponentAudioSource();musicAu.loop true;musicAu.playOnAwake false;soundAu gameObject.AddComponentAudioSource();}/// summary/// 播放音乐/// /summary/// param nameclipName名字/parampublic void PlayMusic(string clipName){string name;if(musicAu.name null){name ;}else{name musicAu.name;}if(name ! clipName){string path resourcesDir / clipName;AudioClip clip Resources.LoadAudioClip(path);if(clip ! null){musicAu.clip clip;musicAu.Play();}}}/// summary/// 暂停播放音乐/// /summarypublic void StopMusic(){if(musicAu.clip ! null){musicAu.Stop();}}/// summary/// 播放声音/// /summary/// param nameclipName名字/parampublic void PlaySound(string clipName){string path resourcesDir / clipName;AudioClip clip Resources.LoadAudioClip(path);if(clip ! null){soundAu.PlayOneShot(clip);}}
}在项目根目录创建Resources文件夹并在该文件夹中再创建sound文件夹用来存放播放的声音。 在其他脚本直接通过单例播放该名称的背景音乐/特效声音。
代码如下
//播放背景音乐-BackgroundMusic
SoundManager.Instance.PlayMusic(BackgroundMusic);
//播放特效声音-ClickButton
SoundManager.Instance.PlaySound(ClickButton);因为作者精力有限文章中难免出现一些错漏敬请广大专家和网友批评、指正。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/914642.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!