Timeline和Playable导致Unity崩溃问题记录

Timeline和Playable导致Unity崩溃问题记录

使用Timeline和Playable出现了Unity崩溃的问题
使用Playable制作的自定义动画播放组件,以取代unity的controller(但是还是需要animator,因为使用的是AnimationClipPlayable,这个还是需要用Animator去播放动画的,主要的好处是我们可以更自由的定制动画的相关功能,不再需要创建AinamtorController的素材,但由于依然使用了Animator驱动,因此性能上并不会有多少优化,甚至写的不好还可能出现性能问题)
然后我们在Timeline的轨道中去调用了这个组件的播放(是直接拿AnimationClip传进去播放)结果导致了Unity崩溃
在这里插入图片描述
根据Unity官方人员的回答,我们不能在Timeline轨道中的ProcessFrame中进行Playable的连接或者断开连接操作(Connect/Disconnect),需要在PrepareFrame中操作(这应该属于Unity的Bug,Unity的人也这么说),但是即使我移到PrepareFrame中操作也是同样的崩溃。

在这里插入图片描述
在这里插入图片描述
后来,我们在收到外部的播放申请后,没有立马去播放,而是留到LateUpdate中去播放,这样子才不会崩溃了,算是一种权宜之计吧。
如果有遇到类似崩溃的情况,也可以尝试下,不要马上去调用播放,看看能不

Unity中,`Playable Director` 是一个组件,用于控制 `Timeline` 的播放。`Timeline` 是Unity的动画系统,允许用户创建复杂的动画序列,包括声音、动画剪辑其他类型的播放事件。`Playable Director` 可以用来控制这些 `Timeline` 资产的播放行为。以下是使用 `Playable Director` 控制 `Timeline` 播放、暂停倒放的基本方法: 1. **播放 (Play)**: 要播放 `Timeline`,首先需要通过 `Resources` 加载或通过脚本获取到 `Timeline` 资产的引用,然后创建一个 `PlayableDirector` 实例并将其绑定到该资产。之后,调用 `Director.Play()` 方法即可开始播放 `Timeline`。 ```csharp // 假设你已经有了一个Timeline资源实例 timelineAsset PlayableDirector director = gameObject.AddComponent<PlayableDirector>(); director.SetGenericBinding(director.playableAsset, targetObject); // targetObject是Timeline中绑定的任意对象 director.RebuildGraph(); // 重建图以应用绑定 director.Play(); // 开始播放 ``` 2. **暂停 (Pause)**: `PlayableDirector` 并没有直接的暂停方法,但可以通过控制时间的流逝来实现暂停效果。你可以将 `director.time` 设置为当前时间,并将播放速度 `director.playSpeed` 设置为零来实现暂停。 ```csharp director.playSpeed = 0f; // 暂停播放 ``` 3. **倒放 (Reverse)**: 要实现倒放,可以将 `director.playSpeed` 设置为负值。这会使 `Timeline` 从当前时间开始倒着播放。 ```csharp director.playSpeed = -1f; // 开始倒放 ``` 通过以上方法,你可以在运行时控制 `Timeline` 的播放、暂停倒放行为。不过,请注意,具体实现可能还需要根据你的游戏逻辑来调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值