找回密码
 注册帐号

扫一扫,访问微社区

Unity 音频的图谱展示

17
回复
1500
查看
[ 复制链接 ]
6蛮牛粉丝
1420/1500
排名
4167
昨日变化

16

主题

399

帖子

1420

积分

Rank: 6Rank: 6Rank: 6

UID
18541
好友
7
蛮牛币
165
威望
0
注册时间
2014-3-22
在线时间
647 小时
最后登录
2020-6-24
2019-11-21 11:06:05 显示全部楼层 阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
[AppleScript] 纯文本查看 复制代码
using UnityEngine;
using UnityEngine.UI;


[RequireComponent(typeof(AudioSource))]
public class AudioVisualizer : MonoBehaviour
{
    public RectTransform[] rectts;
    Image[] barsSprites;

    [Range(0, 10)]
    public float colorMultiplyer = 1;
    [Range(0.001f, 0.999f)]
    public float s = 1;
    [Range(0.001f, 0.999f)]
    public float v = 1;
    public float musicLength;

    public AudioSource _audio;

    public int length;
    public GameObject item;
    private void Start()
    {
        rectts = new RectTransform[length];
        barsSprites = new Image[length];
        for (int i = 0; i < length; i++)
        {
            GameObject game = Instantiate(item, item.transform.parent, false);
            game.transform.localPosition = new Vector3(i * 0.1f, 0, 0);
            game.SetActive(true);
            rectts[i] = game.GetComponent<RectTransform>();
            barsSprites[i] = game.GetComponent<Image>();
        }
    }

    void Update()
    {
        Visulization();

        musicLength = _audio.time;
    }
    private float[] musicData = new float[256];
    int i = 0;
    void Visulization()
    {
        _audio.GetSpectrumData(musicData, 0, FFTWindow.Triangle);
        for (i = 0; i < length; i++)
        {
            rectts[i].sizeDelta = new Vector2(850f / length, musicData[i] * 1000);
            barsSprites[i].color = HSVtoRGB(musicData[i] * colorMultiplyer, s, v);
        }
    }
    #region Static
    public static Color HSVtoRGB(float hue, float saturation, float value)
    {
        while (hue > 1f)
        {
            hue -= 1f;
        }
        while (hue < 0f)
        {
            hue += 1f;
        }

        if (hue > 0.999f) hue = 0.999f;
        if (hue < 0.001f) hue = 0.001f;

        float h6 = hue * 6f;
        if (h6 == 6f) h6 = 0f;

        int ihue = (int)(h6);
        float p = value * (1f - saturation);
        float q = value * (1f - (saturation * (h6 - ihue)));
        float t = value * (1f - (saturation * (1f - (h6 - ihue))));
        switch (ihue)
        {
            case 0:
                return new Color(value, t, p, 1);
            case 1:
                return new Color(q, value, p, 1);
            case 2:
                return new Color(p, value, t, 1);
            case 3:
                return new Color(p, q, value, 1);
            case 4:
                return new Color(t, p, value, 1);
            default:
                return new Color(value, p, q, 1);
        }
    }
    #endregion
}


bandicam 2019-11-21 11-03-34-362[00_00_02--00_00_22].gif
回复

使用道具 举报

6蛮牛粉丝
1420/1500
排名
4167
昨日变化

16

主题

399

帖子

1420

积分

Rank: 6Rank: 6Rank: 6

UID
18541
好友
7
蛮牛币
165
威望
0
注册时间
2014-3-22
在线时间
647 小时
最后登录
2020-6-24
楼主 2019-11-21 11:09:55 显示全部楼层
本帖最后由 光亮 于 2019-11-21 11:12 编辑

使用起来超级简单, MusicLength是当前音乐的播放进度, 如果需要进度条展示的话自行处理, length是当前图谱的横向个数, musicData是当前音频的图谱信息, 注意:长度要大于length, 而且必须是64和8192之间的2的幂, 然后Item随便绑定个image就可以了, 我这里Item的父对象绑定了HorizontalLayoutGroup且宽度为850,所以才有sizeDelta = new Vector2(850f / length, musicData * 1000);  请根据实际情况操作, 最好设置成死值,避免计算.
回复 支持 反对

使用道具 举报

7日久生情
1525/5000
排名
8746
昨日变化

0

主题

250

帖子

1525

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
236487
好友
5
蛮牛币
6606
威望
0
注册时间
2017-8-8
在线时间
1139 小时
最后登录
2020-7-2
2019-11-21 15:23:00 显示全部楼层
unity自制可视化音频//
回复 支持 反对

使用道具 举报

5熟悉之中
670/1000
排名
64945
昨日变化

0

主题

51

帖子

670

积分

Rank: 5Rank: 5

UID
312630
好友
0
蛮牛币
670
威望
0
注册时间
2019-1-23
在线时间
617 小时
最后登录
2020-6-20
2019-11-21 16:12:15 显示全部楼层
非常好,要是webgl就好了
回复 支持 反对

使用道具 举报

6蛮牛粉丝
1367/1500
排名
2234
昨日变化

1

主题

232

帖子

1367

积分

Rank: 6Rank: 6Rank: 6

UID
232255
好友
2
蛮牛币
2299
威望
0
注册时间
2017-7-15
在线时间
506 小时
最后登录
2020-7-2
2019-11-22 08:57:14 显示全部楼层
多谢分享
回复

使用道具 举报

7日久生情
2313/5000
排名
1894
昨日变化

65

主题

828

帖子

2313

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
214924
好友
9
蛮牛币
26851
威望
0
注册时间
2017-3-28
在线时间
704 小时
最后登录
2020-6-18
2019-11-22 09:25:03 显示全部楼层
6666666666666
回复

使用道具 举报

7日久生情
2313/5000
排名
1894
昨日变化

65

主题

828

帖子

2313

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
214924
好友
9
蛮牛币
26851
威望
0
注册时间
2017-3-28
在线时间
704 小时
最后登录
2020-6-18
2019-11-22 10:02:35 显示全部楼层
是我不会用?搞成这个效果了~~~~
微信截图_20191122100115.png
回复 支持 反对

使用道具 举报

7日久生情
1965/5000
排名
10706
昨日变化

0

主题

1129

帖子

1965

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
301976
好友
1
蛮牛币
2391
威望
0
注册时间
2018-10-31
在线时间
738 小时
最后登录
2020-7-2
2019-11-22 11:49:43 显示全部楼层
欧呦  
回复 支持 反对

使用道具 举报

6蛮牛粉丝
1420/1500
排名
4167
昨日变化

16

主题

399

帖子

1420

积分

Rank: 6Rank: 6Rank: 6

UID
18541
好友
7
蛮牛币
165
威望
0
注册时间
2014-3-22
在线时间
647 小时
最后登录
2020-6-24
楼主 2019-12-1 12:39:21 显示全部楼层
fengxs420 发表于 2019-11-22 10:02
是我不会用?搞成这个效果了~~~~

亲, 你这里明显是叠在一起了, 试试在父物体上加一个横向的layout
回复 支持 反对

使用道具 举报

7日久生情
2313/5000
排名
1894
昨日变化

65

主题

828

帖子

2313

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
214924
好友
9
蛮牛币
26851
威望
0
注册时间
2017-3-28
在线时间
704 小时
最后登录
2020-6-18
2019-12-2 16:39:43 显示全部楼层
光亮 发表于 2019-12-1 12:39
亲, 你这里明显是叠在一起了, 试试在父物体上加一个横向的layout

好,我试试~~~谢谢
回复 支持 反对

使用道具 举报

7日久生情
1801/5000
排名
1201
昨日变化

1

主题

181

帖子

1801

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
132507
好友
0
蛮牛币
2983
威望
0
注册时间
2015-12-24
在线时间
635 小时
最后登录
2020-4-28
2019-12-9 16:22:35 显示全部楼层
这个好玩!
回复

使用道具 举报

7日久生情
4501/5000
排名
2965
昨日变化

33

主题

2644

帖子

4501

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
173503
好友
7
蛮牛币
1346
威望
0
注册时间
2016-10-5
在线时间
1336 小时
最后登录
2020-7-2
2020-1-1 09:08:48 显示全部楼层
也不错!!学习一下!!!哪啊!
回复 支持 反对

使用道具 举报

3偶尔光临
192/300
排名
10818
昨日变化

0

主题

49

帖子

192

积分

Rank: 3Rank: 3Rank: 3

UID
289170
好友
0
蛮牛币
211
威望
0
注册时间
2018-7-9
在线时间
47 小时
最后登录
2020-5-18
2020-1-2 15:45:19 显示全部楼层
不错
回复

使用道具 举报

5熟悉之中
856/1000
排名
3795
昨日变化

4

主题

218

帖子

856

积分

Rank: 5Rank: 5

UID
237362
好友
0
蛮牛币
4740
威望
0
注册时间
2017-8-13
在线时间
258 小时
最后登录
2020-6-23
2020-1-4 13:17:17 显示全部楼层
本帖最后由 专业找茬的 于 2020-1-4 13:31 编辑

6666666666
回复

使用道具 举报

8常驻蛮牛
7837/10000
排名
249
昨日变化

0

主题

4021

帖子

7837

积分

Rank: 8Rank: 8

UID
3215
好友
0
蛮牛币
21
威望
0
注册时间
2013-9-4
在线时间
1818 小时
最后登录
2020-5-23
2020-2-10 11:34:05 显示全部楼层
6666666666666666
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则