unity 音频可视化

匿名 (未验证) 提交于 2019-12-03 00:21:02
using System.Collections;   using System.Collections.Generic;   using UnityEngine;      public class AudioVisualization : MonoBehaviour   {       public static float volume;       private AudioClip micRecord;       string device;       /// <summary>       /// 拖尾的移动速度   要和摄像机的移动速度一致       /// </summary>       private int speed;       private float x;       void Start()       {           //初始化速度的值           speed = 5;           device = Microphone.devices[0];//获取设备麦克风           micRecord = Microphone.Start(device, true, 999, 44100);//44100音频采样率   固定格式       }       void Update()       {           volume = GetMaxVolume();           if (Input.GetKey(KeyCode.Escape))           {               Application.Quit();           }              //要加粒子特效  产生拖尾           transform.Translate(Vector3.right * speed * Time.deltaTime);           x = gameObject.transform.position.x;           //print(volume);           //处理峰值           if (volume > 0.9f)           {               volume = volume * speed * Time.deltaTime;               gameObject.transform.position = new Vector3(x, volume * 10, 0);           }           else           {               gameObject.transform.position = new Vector3(x, volume * 10, 0);           }       }       //每一振处理那一帧接收的音频文件       float GetMaxVolume()       {           float maxVolume = 0f;           //剪切音频           float[] volumeData = new float[128];           int offset = Microphone.GetPosition(device) - 128 + 1;           if (offset < 0)           {               return 0;           }           micRecord.GetData(volumeData, offset);              for (int i = 0; i < 128; i++)           {               float tempMax = volumeData[i];//修改音量的敏感值               if (maxVolume < tempMax)               {                   maxVolume = tempMax;               }           }           return maxVolume;       }   }  

文章来源: unity 音频可视化
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!