35.核心系统-音效系统-麦克风
35.1 知识点
Unity提供了Microphone类
获取设备麦克风信息
devices静态变量 返回使用麦克风设备string数组
//可用麦克风设备(用名称标识)的列表。
string[] strs = Microphone.devices;
for (int i = 0; i < strs.Length; i++)
{
print(strs[i]);
}
Start方法 麦克风开始录制
//按下空格键开始录制
if (Input.GetKeyDown(KeyCode.Space))
{
//Start静态方法 麦克风开始录制 返回一个AudioClip音频文件 可以用来存储
//开始使用设备进行录制。
//参数一:设备名 传空使用默认设备
//参数二:超过录制长度后 是否重头录制
//参数三:录制时长
//参数四:采样率
audioClip = Microphone.Start(null, false, 10, 44100);
}
End方法 麦克风结束录制
//抬起空格键结束录制
if (Input.GetKeyUp(KeyCode.Space))
{
//End静态方法 麦克风结束录制
//停止录制。
Microphone.End(null);
//第一次去获取AudioSource 没有AudioSource才添加新的AudioSource
AudioSource audioSource = this.GetComponent<AudioSource>();
if (audioSource == null)
{
audioSource = this.gameObject.AddComponent<AudioSource>();
}
//设置AudioSource的音频文件并播放
audioSource.clip = audioClip;
audioSource.Play();
//抬起空格键结束录制逻辑内
}
获取音频数据用于存储或者传输
//抬起空格键结束录制逻辑内
//AudioClip类的channels变量和samples变量
//channels变量 音频剪辑中的声道数。(只读)
//samples变量 样本中音频剪辑的长度。(只读)
//规则 用于存储数组数据的长度 是用 声道数 * 剪辑长度
float[] f = new float[audioClip.channels * audioClip.samples];
//AudioClip类的GetData方法 把音频数据存储到浮点数数组当中
//使用剪辑中的样本数据填充数组。
audioClip.GetData(f, 0);
print(f.Length); //441000
35.2 知识点代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Lesson35_音效系统_麦克风输入相关 : MonoBehaviour
{
private AudioClip audioClip;
void Start()
{
#region 知识点一 获取设备麦克风信息
//Unity提供了 Microphone类
//devices静态变量 返回使用麦克风设备string数组
//可用麦克风设备(用名称标识)的列表。
string[] strs = Microphone.devices;
for (int i = 0; i < strs.Length; i++)
{
print(strs[i]);
}
#endregion
}
void Update()
{
#region 知识点二 麦克风开始录制
//按下空格键开始录制
if (Input.GetKeyDown(KeyCode.Space))
{
//Start静态方法 麦克风开始录制 返回一个AudioClip音频文件 可以用来存储
//开始使用设备进行录制。
//参数一:设备名 传空使用默认设备
//参数二:超过录制长度后 是否重头录制
//参数三:录制时长
//参数四:采样率
audioClip = Microphone.Start(null, false, 10, 44100);
}
#endregion
#region 知识点三 麦克风结束录制
//抬起空格键结束录制
if (Input.GetKeyUp(KeyCode.Space))
{
//End静态方法 麦克风结束录制
//停止录制。
Microphone.End(null);
//第一次去获取AudioSource 没有AudioSource才添加新的AudioSource
AudioSource audioSource = this.GetComponent<AudioSource>();
if (audioSource == null)
{
audioSource = this.gameObject.AddComponent<AudioSource>();
}
//设置AudioSource的音频文件并播放
audioSource.clip = audioClip;
audioSource.Play();
#region 知识点四 获取音频数据用于存储或者传输
//抬起空格键结束录制逻辑内
//AudioClip类的channels变量和samples变量
//channels变量 音频剪辑中的声道数。(只读)
//samples变量 样本中音频剪辑的长度。(只读)
//规则 用于存储数组数据的长度 是用 声道数 * 剪辑长度
float[] f = new float[audioClip.channels * audioClip.samples];
//AudioClip类的GetData方法 把音频数据存储到浮点数数组当中
//使用剪辑中的样本数据填充数组。
audioClip.GetData(f, 0);
print(f.Length); //441000
#endregion
}
#endregion
}
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com