在网上找了很久Koreographer的基础使用说明,就那一篇文章,抄来抄去的,介绍的也不是很详细。siki学院有讲解课程,但没时间去仔细看,最后连看带摸索的,了解了一些基本操作,分享一下。
文章附带插件链接,仅供个人测试使用,商业用途请自行购买正版
1.导入插件(直接拖进unity就行,不多说了)
2.打开Koreography编辑器
3.新建Koreography文件
4.添加音乐文件
5.新建KoreographyTrackBase文件
6.在音轨上添加事件
7.事件编辑
8.添加 Koreographer和SimpleMusicPlayer组件
9.代码
using System.Collections.Generic;
using UnityEngine;
using SonicBloom.Koreo;
using SonicBloom.Koreo.Players;
public class Test
{
//这个就是第5步中说的那个ID名称,是根据这个在 Koreography 中获取 KoreographyTrackBase 文件的
private string eventID;
//这个是之前在空物体上添加的组件,可以装进所有的 Koreography 事件组,感觉像是一个总控类吧
Koreographer koreographer;
//第一次新建的那个文件,每个koreography应该只能有一首音乐,但可以有多个 KoreographyTrackBase ,也就是多个事件组
Koreography koreography;
//第二次新建的那个文件,每个 KoreographyTrackBase 就是一个事件组
KoreographyTrackBase koreographyTrackBase;
//事件类,就是之前在音轨上添加的每个事件
KoreographyEvent koreographyEvent;
//之前的空物体上添加的组件,音乐控制类
SimpleMusicPlayer simpleMusicPlayer;
public List<KoreographyEvent> rawEvents { get; set; }
/// <summary>
/// 获取所有事件
/// </summary>
private void GetEvents()
{
//根据下标获取koreography文件
Koreography koreography = Koreographer.Instance.GetKoreographyAtIndex(0);
//获取音频轨迹
KoreographyTrackBase rhythmTrack = koreography.GetTrackByID(eventID);
//获取所有事件
rawEvents = rhythmTrack.GetAllEvents();
//事件中下标为1的事件的开始时间(这个时间是采样频率的那种时间)
Debug.Log(rawEvents[1].StartSample);
//获取事件中下标为1的事件值
Debug.Log(rawEvents[1].GetIntValue());
//获取这个koreography的采样频率(默认是48000Hz/秒)
Debug.Log(koreography.SampleRate);
}
//我做了一个类似节奏大师的功能,每个事件是添加在音符响起的地方。从一开始就计时(秒),然后将计时转换成频率时间,然后再加上需要提前的时间。再和这个事件点的采样频率时间对比,是否触发事件。
}
一点简单粗糙的理解和使用,谁那有更详细的讲解和使用的话可以在评论处留下链接,谢谢了。
插件链接:链接:https://pan.baidu.com/s/1luZDBPQvYgifUr2tzuVXCQ&shfl=sharepset
提取码:hzog