Unity Timeline的拓展,如何写脚本 【待写】

1、Timeline结构介绍

首先,一个Timeline是由多个track组成。每个track又是又多个clip组成。如下图所示。这是一个动画的track。在后面,放着的idle、walk等都是一个个的动画clip。随着时间的进行,后面这些动画clip都会使用到挂在的物体上,让他做出这一个个动作。

除了track、clip之外,上图中还有behaviour。正如名字一样,他是定义行为、掌管逻辑的东西。每一个clip都有其自己的行为。比如动画clip就可以将动画的数据作用到对应的物体上,声音clip就可以控制系统中的声音,Cinemachine clip就可以控制摄像机一样,每一个clip都会跟着一个behaviour来定义其行为。

同上,上面还有一个MixerBehaviour。他定义的是两个clip片段之间的融合过度如何处理。Timeline中一个很重要的功能就是过度,上图中walk和jump两个clip就有一部分重合在了一起,当时间运行到这一部分的时候,这两个动画该怎么样同时应用到一个物体上就需要MixerBehaviour脚本来定义。

好了,做一个总结。一套完整的Timeline拓展需要自定义track、clip、clip的behaviour、MixerBehaviour。

其中Track脚本继承自TrackAsset,Clip脚本继承自PlayableAsset和ITimelineClipAsset,clip的行为脚本继承自PlayableBehaviour,MixerBehaviour也继承自PlayableBehaviour。

2、做一个Clip

先做一个普通的clip,他可以直接放在Timeline内置的playable轨道。

using System;
using UnityEngine;
using UnityEngine.Playables;
using UnityEngine.Timeline;

[Serializable]
public class SimpleClip : PlayableAsset, ITimelineClipAsset
{
	public SimpleBehaviour template = new SimpleBehaviour ();

	//这个函数是将Clip与Behaviour绑定的必要函数。
	public override Playable CreatePlayable (PlayableGraph graph, GameObject owner)
	{
		var playable = ScriptPlayable<SimpleBehaviour>.Create(graph, template);
		return playable;
	}

	//定义clip的特性,比如blending, extrapolation, looping, etc.。是对ITimelineClipAsset接口的实现。
	public ClipCaps clipCaps  
	{
		get { return ClipCaps.None; }
	}
}

其中有一个定义行为的SimpleBehaviour。

using System;
using UnityEngine;
using UnityEngine.Playables;
using UnityEngine.Timeline;

[Serializable]
public class SimpleBehaviour : PlayableBehaviour
{
	
	public string message;

	
	//Timeline运行到这个Clip时,每帧都会回调的函数
	public override void ProcessFrame(Playable playable, FrameData info, object playerData)
	{
		//里面就写每帧的逻辑
		Debug.Log(message);
	}
}

这样,就定义了一个Clip,他每帧就会在控制台发送一个Log。

在Timeline的Playable轨道上就可以创建这个SimpleClip

3、深入Timeline

以下的说法都是我自己的理解,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值