Koreographer这个插件是一款可以控制音乐节奏的插件,反正我是第一想到了音乐游戏。因为本来就是想做音乐游戏找的插件,Unity音乐这有这方面的知识也是实在少,虽然看见SiKi老师出这个课了,但是真的买不起啊o(╥﹏╥)o。所以写个博客记录下,其实主要就是帮大家翻译下插件中文本里比较重要的东西。插件百度网盘在最后了。
主要步骤:
- 打开一个现有的Unity项目或者创建一个新的项目。
- 导入Koreographer包。
- 打开Koreographer编辑器。
- 创建一个Koreographer资源文件。
- 关联音乐。
- 创建一个KoreographyTrack。
- 在KoreographyTrack中定义事件ID。
- 创建一个或者多个事件(KoreographyEvents)。
- 创建一个新的脚本。
- 测试!
具体步骤:
前两个步骤就不说了,新建打开,包是可以从商店下的,当然如果你有钱~~
将Koreographer资源包导入项目中后,点击编辑菜单Window,我们会发现多了两个选项,点击第一个打开Koreographer的编辑器。(如果没有的话,重新导一遍试试,我第一次就没有,不清楚原因)
呐,现在我们可以创建我们自己的一个Koreographer资源了,在点击出来的编辑页面中点击 New Koreography按钮创建
创建完之后就可以在Audio Clip中添加自己喜欢的音乐了~~
找到下图中的地方,点击New按钮创建我们的KoreographyTrack,他将包含我们事件的信息,然后填写我们的事件ID(Track Event ID),事件ID是侦听器脚本用于从其中注册事件的键
基本的都设置完成下面让我们来创建事件吧,在此之前,我们将配置结构,我们希望创建的事件。要配置事件类型和负载类型,请查看波形上方屏幕的右侧。
Event Types
- OneOff:当生成事件时会即刻生成一个事件。
- Span:当生成事件时,会生成一段时间的事件,如果一直按着会一直延续,如果OneOff是一条线,那么Span就是一个长方体。
Payload
先看看官方的吧:
● No Payload:This event is essentially a non-descript message; a trigger.
● Color:This event carries a Colorvalue within it that can be retrieved by event subscribers.
● Curve:Same as the Color except that it carries an AnimationCurve object.
● Float: Same as the Color except that it carries a number.
● Gradient:Same as the Color except that it carries a Gradient object.
● Int:Same as the Color except that it carries a whole number.
● Text:Same as the Color except that it carries text.
第一条无所谓就是什么都没有,很平常的一个事件。为什么放英文出来呢,一会你们就知道了。
第二条的意思是这个事件包含了一个颜色,可以用来检索
第三条,跟第二条类似,除了带有一个AnimationCurve对象
第四条,跟第二条类似,除了带有一个number对象
第五条,跟第二条类似。。。。。。
看了之后根本不知道咋用啊喂!!!!能不能走点心!!!
总之就是多了个功能可以给事件分个类,方便你去调用了。
之后我们来播放音乐啦~!
点击播放按钮播放你喜欢的音乐哦~
在音乐运行的时候按E,Return或者回车键(说实话我一直没找到Return键在哪,按遍了键盘唉。。。)在你觉得应该狠狠敲打的地方按下,创建事件!
然后激动人心的时候到了,在你的Hierarchy中创建一个新物体(命名随便我就不管了)
添加Koreographer和Simple MusicPlayer组件,将我们第四步创建的文件添加到Simple MusicPlayer的Koreography属性中。(Simple MusicPlayer组件会附带一个组件Audio Source,我们将他的Play On Awake取消勾选)
脚本控制:
创建一个空物体,添加上新创建的脚本:
public class EventSubscriber : MonoBehaviour {
public string eventID;//事件ID,之前设置的那个ID
// Use this for initialization
void Start () {
Koreographer.Instance.RegisterForEvents(eventID, FireEventDebugLog);
}
// Update is called once per frame
void Update () {
}
void FireEventDebugLog(KoreographyEvent koreoEvent)
{
GameObject go = Resources.Load<GameObject>("Cube");
Instantiate(go);
}
}
OK!完成,之后就会有好多小方块出来啦~~
插件百度网盘:https://pan.baidu.com/s/1DL-d0Pi8RDLwTxZ4StpmwQ 密码:h0p0