Unity3D-利用Playable和Timeline实现对话框

因为自己想做一个甜品级的galgame,上学期曾经用java写过一个json的对话流程配置工具,但是gui实在是太难写了,而且写出来的对话树有bug,所以也就作罢了。

偶然看到unity的timeline工具,感觉可以使用它做出效率比较高的对啊流程配置,并且不只是对话,连人物的动画,音乐等都可以很好的显示出来。

这几天了解了一下timeline中的playablebehaviour和playableAsset,算是初步认识了,并写了一个小DEMO,由于网上的关于这方面的教程并不是很多,所以这篇文章也算留个念。


首先要明确playableAsset是在timeline界面中显示的长条,而playableBehaviour则是对应的行为方式。Unity3D-利用Playable和Timeline实现对话框_第1张图片

也就是说,编辑的时候是使用的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

 

你可能感兴趣的:(Unity3D相关)