unity学习30:Audio Source, Audio clip 音效和音乐

目录

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
{
    //声明AudioClip
    public AudioClip m1;  //绑定外部clip
    public AudioClip m2;

    //定义播放器组件
    private AudioSource player1;

    // Start is called before the first frame update
    void Start()
    {
        player1=GetComponent<AudioSource>();
        //
        player1.clip=m1;
        player1.loop=true;
        player1.volume=0.5f;   
        player1.Play();    

    }

    // Update is called once per frame
    void 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
{
    //声明AudioClip
    public AudioClip m1;  //绑定外部clip
    public AudioClip m2;

    //定义播放器组件
    private AudioSource player1;

    // Start is called before the first frame update
    void Start()
    {
        player1=GetComponent<AudioSource>();
        //
        player1.clip=m1;
        player1.loop=true;
        player1.volume=0.5f;   
        player1.Play();    

    }

    // Update is called once per frame
    void 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
    {
        //声明AudioClip
        public AudioClip m1;  //绑定外部clip
        public AudioClip m2;
    
        //定义播放器组件
        private AudioSource player1;
    
        // Start is called before the first frame update
        void Start()
        {
            player1=GetComponent<AudioSource>();
            //
            player1.clip=m1;
            player1.loop=true;
            player1.volume=0.5f;   
            player1.Play();    
    
        }
    
        // Update is called once per frame
        void 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);
            }
    
    
        }
    }
    

    ### Unity 中最新版 AudioSource 系统使用指南更新特性 #### 一、AudioSource 组件概述 在 Unity 的音频系统中,`AudioSource` 是用于控制音效播放的核心组件之一。通过该组件可以设置多种属性来定制化音频行为,包括但不限于音量大小、是否循环播放以及空间化效果等[^1]。 #### 二、主要功能介绍 - **基础属性** - `volume`: 控制声音的响度,默认值为1表示正常音量;0则完全静默。 - `pitch`: 调整音调高低,范围通常介于0至3之间,其中1代表原始频率不变。 - **高级选项** - `spatialBlend`: 定义了从单声道向立体声转换的程度,在虚拟三维环境中特别有用,可实现更逼真的听觉体验。 - `rolloffMode`: 设置衰减模式(线性、对数),影响距离变化时音量的变化规律。 - **新特性支持** - 支持Doppler效应模拟移动物体发出的声音随速度改变而产生的频移现象; - 提供更加灵活的空间音频解决方案,允许开发者自定义球形或锥形发声区域,并能更好地适应不同平台的需求[^3]。 #### 三、代码示例 下面是一个简单的脚本例子,展示了如何利用C#编程语言操作`AudioSource`对象: ```csharp using UnityEngine; public class PlaySound : MonoBehaviour { public AudioClip clip; private AudioSource audioSrc; void Start() { // 获取当前GameObject上的AudioSource组件实例 audioSrc = GetComponent<AudioSource>(); // 加载指定的音频片段并准备播放 if (clip != null){ audioSrc.clip = clip; audioSrc.Play(); } } } ``` 此段程序会在场景加载完成后自动播放预先设定好的音频文件[^2]。
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值