using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 定义端
/// </summary>
public class AudioGlobe : MonoBehaviour {
//1。全局事件注册
//2.单例 全局类 向外提供一个接口
private static AudioGlobe audios;
public static AudioGlobe inistance
{
get {
if (audios == null)
{
audios = GameObject.FindObjectOfType
(typeof(AudioGlobe)) as AudioGlobe;
if (audios == null)
{
GameObject go = new GameObject();
audios= go.AddComponent<AudioGlobe>();
go.name = "AudioGlobe";
}
}
return audios;
}
}
private AudioClip[] audioClips;
void Start () {
audioClips=
Resources.LoadAll<AudioClip>("AudioClips");
Debug.Log(audioClips.Length);
}
//时间复杂度 空间复杂度
public void PlayClip(string audioName,GameObject obj,bool isLoop)
{
//音频的数组是否是空值或者没值 如果是 跳出当前方法
if (audioClips == null || audioClips.Length == 0)
return;
//在我们音频数组中找到名称相同的音频
AudioClip item = Array.Find<AudioClip>
(audioClips, p => p.name == audioName);
//我们是否找到了音频 没找到的话返回
if (item == null) return;
//将要播放的AudioSource的音频修改为玩家要播放的音频
AudioSource source = obj.GetComponent<AudioSource>();
source.clip = item;
source.Play();
source.loop = isLoop;
}
/// <summary>
/// 暂停
/// </summary>
/// <param name="obj"></param>
public void PauseClip(GameObject obj)
{
obj.GetComponent<AudioSource>().Pause();
}
// Update is called once per frame
void Update () {
}
}
调用单例
public class TestAudio : MonoBehaviour {
void Start () {
// AudioGlobe.inistance.Test();
AudioGlobe.inistance.PlayClip
("BackgroundMusic", gameObject,true);
}
void Update () {
if (Input.GetKeyDown(KeyCode.Space))
AudioGlobe.inistance.PauseClip(gameObject);
}
}
Unity简单的单例实例
最新推荐文章于 2024-04-29 21:14:48 发布