参考博客:https://www.jianshu.com/p/ab9ed5c44371
4个代码文件
Audio_Singleton.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Audio_Singleton : MonoBehaviour
{
private static Audio_Singleton instance;//由静态变量初始化,不需要NEW,不然会有警告
private Audio_Singleton() { }//构造函数私有
public static Audio_Singleton Instance//属性访问器获取
{
get
{
return instance;
}
}
private void Awake()
{
if (instance != null)//如果有了就销毁
{
Destroy(this.gameObject);
return;
}
else
{
instance = this;//让这个组件作为单例,绑定到AudioSource的组件上
}
}
public void Start()
{
DontDestroyOnLoad(this.gameObject);
}
public void Audio_Start()
{
instance.gameObject.GetComponent<AudioSource>().Play();
}
public void Audio_Pause()
{
instance.gameObject.GetComponent<AudioSource>().Pause();
}
public void Audio_Stop()
{
instance.gameObject.GetComponent<AudioSource>().Stop();
}
}
Scence1_cs.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class Scence1_cs : MonoBehaviour
{
void Start()
{
}
void Update()
{
}
public void Button01_to_02Click()//场景1->场景2转换
{
SceneManager.LoadScene("02");
}
public void Start01_ButtonClick()//音乐开始
{
//单例的调用
Audio_Singleton.Instance.Audio_Start();
}
public void Pause01_ButtonClick()//音乐暂停
{
Audio_Singleton.Instance.Audio_Pause();
}
public void Stop01_ButtonClick()//音乐结束
{
Audio_Singleton.Instance.Audio_Stop();
}
}
Scence2_cs.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class Scence2_cs : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
public void Button02_to_03Click()//场景1->场景2转换
{
SceneManager.LoadScene("03");
}
public void Start02_ButtonClick()//音乐开始
{
Audio_Singleton.Instance.Audio_Start();
}
public void Pause02_ButtonClick()//音乐暂停
{
Audio_Singleton.Instance.Audio_Pause();
}
public void Stop02_ButtonClick()//音乐结束
{
Audio_Singleton.Instance.Audio_Stop();
}
}
Scence3_cs.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class Scence3_cs : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
public void Button03_to_01Click()//场景1->场景2转换
{
SceneManager.LoadScene("01");
}
public void Start03_ButtonClick()//音乐开始
{
Audio_Singleton.Instance.Audio_Start();
}
public void Pause03_ButtonClick()//音乐暂停
{
Audio_Singleton.Instance.Audio_Pause();
}
public void Stop03_ButtonClick()//音乐结束
{
Audio_Singleton.Instance.Audio_Stop();
}
}
界面图:
组件图:(以场景1为例,把Scence1_cs附加到camera上面)