1.代码控制播放、暂停、停止
给游戏物体添加Audio Source组件 把音频文件拖入Audio Source组件的AudioCilp中 创建一个脚本并挂载
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Lesson20 : MonoBehaviour
{
AudioSource audioSource;
void Start()
{
audioSource = this.GetComponent<AudioSource>();
}
void Update()
{
if (Input.GetKeyDown(KeyCode.P))
{
audioSource.Play();
}
if (Input.GetKeyDown(KeyCode.Space))
{
audioSource.Pause();
}
if (Input.GetKeyDown(KeyCode.S))
{
audioSource.Stop();
}
}
}
2.如何检测音效播放完毕
如果我们希望音乐播放完毕后 做一些事情 就需要检测音乐是否播放完毕
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Lesson20 : MonoBehaviour
{
AudioSource audioSource;
void Start()
{
audioSource = this.GetComponent<AudioSource>();
}
void Update()
{
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 audio = this.gameObject.GetComponent<AudioSource>();
audio.clip = clip;
audio.Play();
}
}
|