欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > unity学习30:Audio Source, Audio clip 音效和音乐

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

2025/2/10 23:16:05 来源:https://blog.csdn.net/xuemanqianshan/article/details/145496943  浏览:    关键词: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
{//声明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);}}
    }
    

    版权声明:

    本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

    我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com