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

本文分享了作者利用Unity的Timeline工具实现高效对话流程配置的经验,不仅限于对话,还能同步控制角色动画与音乐,通过PlayablesBehaviour和PlayablesAsset实现了更直观的状态机管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因为自己想做一个甜品级的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

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值