因为自己想做一个甜品级的galgame,上学期曾经用java写过一个json的对话流程配置工具,但是gui实在是太难写了,而且写出来的对话树有bug,所以也就作罢了。
偶然看到unity的timeline工具,感觉可以使用它做出效率比较高的对啊流程配置,并且不只是对话,连人物的动画,音乐等都可以很好的显示出来。
这几天了解了一下timeline中的playablebehaviour和playableAsset,算是初步认识了,并写了一个小DEMO,由于网上的关于这方面的教程并不是很多,所以这篇文章也算留个念。
首先要明确playableAsset是在timeline界面中显示的长条,而playableBehaviour则是对应的行为方式。
也就是说,编辑的时候是使用的asset,播放的时候是behaviour。
将代码拖入timeline中,会在asset的CreatePlayable方法中创建并返回一个被包装的behaviour,在这个方法里,可以进行behaviour内引用的初始化。
注意,asset内public的字段会显示在inspector中,引用必须使用ExposedReference。
在按下播放按钮后,就会开始执行behaviour中的逻辑,但是behaviour中的方法调用很混乱:
在timeline按下播放时,会调用全部behaviour的pause方法,之后再调用排在最前面的asset对应behaviour的play方法。当出现两条轨道的asset存在相连的连续播放时,前一条asset播放完后,会调用其对应behaviour的pause(没错,调用的就是pause),再调用后一条的pause和play。
所以我自己写了一个简单的状态机,把playableBehaviour又封装了Init,awake,start,update,pause的方法,更加直观。
这个DEMO我上传到了百度云上,有兴趣的可以结合前面的,学习一下。
https://pan.baidu.com/s/1Z-spB0RypBVxRSmOwmmu-g
提取码:hini