目录
1 音乐相关必须要有 Audio listener 和Source
2 Scene里必须要有 Audio listener
3 Audio Source
3.1 Audio Source 就是音源,可播放的音乐clip 分类
3.2 创建Audio Source
3.3 各种属性
3.4 3D sound Settings
4 使用脚本来播放声音
4.1 声明AudioClip 并进行外部绑定
4.2 GetComponent()
4.3 AudioSource对应的控制
4.4 用按键去控制
4.4.1 控制
4.4.2 实际代码
5 播放音效
1 音乐相关必须要有 Audio listener 和Source
- Audio listener : 负责听到声音
- Audio Source : 负责发出声音,声音源
2 Scene里必须要有 Audio listener
- Scene里必须要有 Audio listener
- Audio listener 也不需要单独创建,一般场景里会自动创建
- 每个场景Scene创建时,会自动创建1个camera,每个camera都会默认带一个 audio listener
- 如果有多个camera,就会有多个audio listener,保留1个即可
3 Audio Source
3.1 Audio Source 就是音源,可播放的音乐clip 分类
- Audio Source 就是音源,有一个喇叭符号
- 音效, 一般就是短时的,一次性播放的音效文件 clip
- 音乐,一般是背景音乐等,比较长,循环或单次等
3.2 创建Audio Source
- 比如在一个gameObject上创建一个 Audio Source
- 然后把 Asset shop 下载,导入的文件,拖到这里
- 开始运行就可以测试了
3.3 各种属性
- output
- mute: //静音
- bypass Effects : //绕过音响
- bypass listener Effects : // 绕过监听器效果
- play on awake
- loop
3.4 3D sound Settings
- 小圆球 : 声音发出的最小距离
- 大圆球: 声音发出的最小距离, 一个超级大球
- 3D曲线:
- 3D 声音,还是远了听了就变小,符合现实世界原理
4 使用脚本来播放声音
- 外面的各种勾选,比如loop可以不勾选
- 可以脚本里控制
4.1 声明AudioClip 并进行外部绑定
- public AudioClip m1; //绑定外部clip
- public AudioClip m2;
- 脚本里声明public 变量后, unity编辑器可以进行资源绑定
public AudioClip m1; //绑定外部clip
public AudioClip m2;//大概就相当于 其他语言里 path="" 这种指定外部资源吧
4.2 GetComponent<AudioSource>()
- GetComponent<>()
- GetComponent<AudioSource>() 返回1个AudioSource对象
- 所以需要这么定义
直接一句话定义和赋值
- AudioSource player1=GetComponent<AudioSource>();
或者分开定义和赋值
- private AudioSource player1;
- player1=GetComponent<AudioSource>();
4.3 AudioSource对应的控制
// 把外部获得的clip文件,赋值给player1.clip
- player1.clip=m1;
//设置循环
- player1.loop=true
// 控制声音
- player1.volume=0.5f
// 播放
- player1.Play()
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class TestMusic : MonoBehaviour
{//声明AudioClippublic AudioClip m1; //绑定外部clippublic AudioClip m2;//定义播放器组件private AudioSource player1;// Start is called before the first frame updatevoid Start(){player1=GetComponent<AudioSource>();//player1.clip=m1;player1.loop=true;player1.volume=0.5f; player1.Play(); }// Update is called once per framevoid Update(){}
}
4.4 用按键去控制
4.4.1 控制
- player1.Pause();
- player1.Stop();
- player1.UnPause();
- player1.play();
4.4.2 实际代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class TestMusic : MonoBehaviour
{//声明AudioClippublic AudioClip m1; //绑定外部clippublic AudioClip m2;//定义播放器组件private AudioSource player1;// Start is called before the first frame updatevoid Start(){player1=GetComponent<AudioSource>();//player1.clip=m1;player1.loop=true;player1.volume=0.5f; player1.Play(); }// Update is called once per framevoid Update(){if(Input.GetKeyDown(KeyCode.Space)){if(player1.isPlaying==true){//暂停播放player1.Pause();//player1.Stop();}else{//继续播放player1.UnPause();//player1.play();}}}
}
5 播放音效
- 音效的播放方式
- player1.PlayOneShot()
- 不循环,
- 每次只执行一次
- 可以反复执行
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class TestMusic : MonoBehaviour
{//声明AudioClippublic AudioClip m1; //绑定外部clippublic AudioClip m2;//定义播放器组件private AudioSource player1;// Start is called before the first frame updatevoid Start(){player1=GetComponent<AudioSource>();//player1.clip=m1;player1.loop=true;player1.volume=0.5f; player1.Play(); }// Update is called once per framevoid Update(){if(Input.GetKeyDown(KeyCode.Space)){if(player1.isPlaying==true){//暂停播放player1.Pause();//player1.Stop();}else{//继续播放player1.UnPause();//player1.play();}}if(Input.GetMouseButtonDown(0)){player1.PlayOneShot(m2);}}
}