当前位置: 首页 > news >正文

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);}}
    }
    

    http://www.lryc.cn/news/532825.html

    相关文章:

  • 【Qt 常用控件】输入类控件1(QLineEdit和QTextEdit 输入框)
  • openEuler22.03LTS系统升级docker至26.1.4以支持启用ip6tables功能
  • 深入解析:如何利用 Java 爬虫按关键字搜索淘宝商品
  • STM32上部署AI的两个实用软件——Nanoedge AI Studio和STM32Cube AI
  • C++ Primer 成员访问运算符
  • 芯科科技的BG22L和BG24L带来应用优化的超低功耗蓝牙®连接
  • java后端开发面试常问
  • ‌双非硕士的抉择:自学嵌入式硬件开发还是深入Linux C/C++走软开?
  • Windows系统使用Git教程详解
  • Linux firewalld开启日志审计功能(2)
  • 【声音转文字CapsWriter】声音随时转化为文字,CapsWriter提高工作效率
  • 深入理解小波变换:信号处理的强大工具
  • 人机交互系统实验三 多通道用户界面
  • Filter -> MaskFilter遮罩滤镜详解
  • RK3568使用QT操作LED灯
  • python学opencv|读取图像(五十七)使用cv2.bilateralFilter()函数实现图像像素双边滤波处理
  • 为何实现大语言模型的高效推理以及充分释放 AI 芯片的计算能力对于企业级落地应用来说,被认为具备显著的研究价值与重要意义?
  • Android 约束布局ConstraintLayout整体链式打包居中显示
  • 在C#中,Array,List,ArrayList,Dictionary,Hashtable,SortList,Stack的区别
  • 微服务知识——微服务架构的演进过程
  • Chrome 浏览器:互联网时代的浏览利器
  • 深入浅出 NRM:加速你的 npm 包管理之旅
  • Linux——基础命令1
  • nuxt3中使用useFetch请求刷新不返回数据或返回html结构问题解决-完整nuxt3useFetchtch请求封装
  • Kubernetes 中 BGP 与二层网络的较量:究竟孰轻孰重?
  • C中静态库和动态库的使用
  • Debian 安装 Nextcloud 使用 MariaDB 数据库 + Caddy + PHP-FPM
  • 【FPGA】 MIPS 12条整数指令 【3】
  • Mac 部署Ollama + OpenWebUI完全指南
  • 蓝桥杯小白打卡第二天