1.代码控制播放、暂停、停止
给游戏物体添加Audio Source组件
把音频文件拖入Audio Source组件的AudioCilp中
创建一个脚本并挂载
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Lesson20 : MonoBehaviour
{
//声明一个AudioSource类型变量
AudioSource audioSource;
void Start()
{
//获取AudioSource组件
audioSource = this.GetComponent<AudioSource>();
}
void Update()
{
//1.播放
// 按下P键播放
if (Input.GetKeyDown(KeyCode.P))
{
audioSource.Play();
//补充:延迟播放(参数1 延迟几秒)
//audioSource.PlayDelayed(3);
}
//2.暂停
// 按下空格暂停播放
if (Input.GetKeyDown(KeyCode.Space))
{
audioSource.Pause();
//补充:停止暂停,和暂停后再Play效果一样
//audioSource.UnPause();
}
//3.停止播放
// 按S键停止播放
if (Input.GetKeyDown(KeyCode.S))
{
audioSource.Stop();
}
}
}
2.如何检测音效播放完毕
如果我们希望音乐播放完毕后 做一些事情
就需要检测音乐是否播放完毕
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Lesson20 : MonoBehaviour
{
//声明一个AudioSource类型变量
AudioSource audioSource;
void Start()
{
//获取AudioSource组件
audioSource = this.GetComponent<AudioSource>();
}
void Update()
{
//使用.isPlaying来检测(返回值是bool)
if (audioSource.isPlaying)
{
print("播放中");
}
else
{
print("播放结束了");
}
}
}
3.如何动态控制音效播放
方式一:直接在要播放音乐的对象上挂载脚本 来控制播放
1.在对象身上的脚本声明一个AudioSource类型的变量,
2.再通过.GetComponent获取挂载的AudioSource音效源脚本
3.控制此音效源脚本,实现动态控制播放
上面的知识点一就是用的这种方法
方式二:实例化挂载了音效源脚本的对象
(此方式用的较少,因为还要管理音效预制体的销毁)
1.把要播放的音效制作成预制体 且 勾选Play On Awake参数
2.给场景中一个对象挂载脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Lesson20 : MonoBehaviour
{
//外部拖入音效预制体
public GameObject obj;
void Start()
{
//实例化外部拖入的音效预制体
GameObject.Instantiate(obj);
}
}
4.如此以来 只要这个预制体一被实例化,就会立刻播放预制体音效
方式三:用一个AudioSource来控制播放不同的音效
AudioSource组件的AudioClip参数是可以通过代码编辑的
并且 还可以声明AudioClip类型的变量,从而从面板拖入音效源:
面板拖入拖入:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Lesson20 : MonoBehaviour
{
//从外部面板拖入的音频
public AudioClip clip;
void Start()
{
//获取一个AudioSource组件
// 获取了自己挂载的对象的AudioSource组件
AudioSource audio = this.gameObject.GetComponent<AudioSource>();
//让获取到的这个AudioSource组件的AudioClip参数 = 我从外部拖入的音频文件
audio.clip = clip;
//播放
audio.Play();
}
}