-- 小伙伴们大家好,没错,汪汪最近闲得慌,又来搞事情了,决定写一篇可视化音乐工具的简单制作教程,本着越简单越好的原则,我的代码一如既往只有骨头。。。。但也希望小伙伴们可以看得懂。 我们还是老样子来看看效果如何: 是的,我们通过音乐频谱数据来让我们的小方块的缩放值不停的变换,以此随着音乐节奏跳动。下面的小方块是UI,UI也可以通过改变Scale来实现。 我们来看看原理: 其实重点是介绍我们Unity中AudioSources中的一个接口: public static void GetSpectrumData(float[] samples, int channel, FFTWindow window); Unity的技术大大们,已经为我们封装好接口,方便我们进行音乐效果制作,如果没有的话,我们还需要自己进行解码,那就走远了。。。。(不得不说,技术进步真快啊,程序员还是挺伟大的) 我们先看一下官方文档: samples :float数组,大小为2的次幂,最小值64,最大值8192 channel:通道 FFTWindow:使用FFTWindow以减少bins/bands之间频率泄漏。 https://docs.unity3d.com/ScriptReference/AudioSource.GetSpectrumData.html 介绍完毕,我们来实践看看: 首先我们编写一个音乐的“解码”脚本: 再加一些函数,方便我们调用: 现在我们运行程序,就可以看到我们的频谱值了: 接下来,我们需要写脚本来利用起这些数值,当然,有些小伙伴看到这里已经可以自行实现了: 我们可视化脚本写完以后,就是这样的: 我们再设置一些方块像这样: 只需要在父级物体设置脚本即可。 由于颜色有三个阶段,所以汪汪只设置了两个值来限定颜色,毕竟一个方块横着切两刀就是三块嘛。其中的shader文件是用来控制效果的,小伙伴们可以自己写,汪汪这里是简单的上色。 这样我们的音乐可视化就实现啦~ 好啦~本次小特效实现就到这里啦~小伙伴们可以对此案例提出你们宝贵的意见。










本文介绍如何使用Unity中的AudioSources接口,通过音乐频谱数据创建动态的音乐可视化效果。重点讲解了GetSpectrumData方法的使用,包括float数组、通道和FFTWindow参数的设定,以及如何将这些数据应用到UI元素上,实现随音乐节奏变化的小方块缩放效果。
1303

被折叠的 条评论
为什么被折叠?



