最近一直再看这方面的内容,看的比较多知识点比较分散,所以目的就是把这些知识点内容梳理一边,并作记录。

PlayableDirector与TrackAsset,TrackAsset与PlayableAsset都是一对多的关系,并且TrackAsset和PlayableAsset都可以用PlayableBehaviour来定义行为。

Asset用来保存数据,Behavior用来定义行为

最初Playable轨道元素只需继承basesasdadwdqw,现在无论是轨道(Track)还是轨道元素(TrackClip)都拆分为两个部分Asset(数据)和PlayableBehavior (行为),

下面举一个简单的例子。

1,添加自定义轨道

public class ConditionTrack : TrackAsset

添加轨道行为类

public class ConditionTrackBehaviour : PlayableBehaviour

将ConditionTrackBehaviour绑定轨道资源的混合器中

public class ConditionTrack : TrackAsset
{ public override Playable CreateTrackMixer(PlayableGraph graph, GameObject go, int inputCount)
{
var playable = ScriptPlayable<ConditionTrackBehaviour>.Create(graph, inputCount);
return playable;
} }

2,创建自定义轨道资源 ConditionClip

[System.Serializable]
public class ConditionClip : PlayableAsset

添加资源的行为类

public class ConditionBehaviour : PlayableBehaviour

在创建ConditionClip资源时绑定ConditionBehaviour

[System.Serializable]
public class ConditionClip : PlayableAsset
{
public ConditionBehaviour ConditionBehaviour = new ConditionBehaviour(); public override Playable CreatePlayable(PlayableGraph graph, GameObject go) {
var playable = ScriptPlayable<ConditionBehaviour>.Create(graph, ConditionBehaviour);
ConditionBehaviour clone = playable.GetBehaviour();
return playable;
}
}

3,轨道指定绑定资源类型

[TrackClipType(typeof(ConditionClip))]
public class ConditionTrack : TrackAsset

这样的话,在ConditionTrack中就可以指定创建ConditionClip类型的PlayableAsset

常用API简介

TrackAsset
对于轨道上的每一个实例对于轨道都是一个TimelineClip类型,并且可以通过GetClips()来获取实例群
public class ConditionTrack : TrackAsset
{
//在轨道上创建轨道资源时调用
public override Playable CreateTrackMixer(PlayableGraph graph, GameObject go, int inputCount){}

}
PlayableAsset
public class ConditionClip : PlayableAsset
{
//创建实例时调用
public override Playable CreatePlayable(PlayableGraph graph, GameObject go) {}
}
PlayableBehaviour
TrackAsset,PlayableAsset对应的行为都是一样的PlayableBehaviour
public class ConditionClip: PlayableBehaviour
{
// 再创建实例时调用
public override void OnPlayableCreate(Playable playable){} // 当开始执行此状态时调用
public override void OnBehaviourPlay(Playable playable, FrameData info) {} // 当离开此状态,或者编辑器停止运行时调用
public override void OnBehaviourPause(Playable playable, FrameData info) {} // 在此状态中运行时每帧调用
public override void PrepareFrame(Playable playable, FrameData info) {}
}

Unity TimeLine的更多相关文章

  1. Unity TimeLine 资源结构

    ---恢复内容开始--- 先看一个TimeLine,如图 再来看看在Inspector中的PlayableDirector 其他参数字面意思很清楚了不再赘述,着重讲一下一个TimeLine绑定的资源. ...

  2. Unity Glossary

    https://docs.unity3d.com/2018.4/Documentation/Manual/Glossary.html 2D terms 2D Physics terms AI term ...

  3. UnityEditorWindow做一个TimeLine的滑动块

    UnityEditorWindow做一个TimeLine的滑动块 最近在做一个基于TimeLine的动画编辑器,在制作TineLine滑动条时遇到问题,网上查了好久,试了好多GUI组件都不满意.最后在 ...

  4. ILRuntime 学习

    ILRuntime: https://github.com/Ourpalm/ILRuntime Demo: https://github.com/Ourpalm/ILRuntimeU3D 中文在线文档 ...

  5. Unity User Group深圳站——Timeline & Cinemachine分享

    报名说明:UUG深圳站,2月分享活动正式启动,1月29日中午12:00前报名可获赠Unity精美纪念礼物一份~ 关于Unity Unity 是一款多平台的综合型游戏开发工具,它的出现对蓬勃发展的全球游 ...

  6. Spine用于Timeline(NullReferenceException: Object reference not set to an instance of an object pine.Unity.Editor.AnimationReferenceAssetEditor.OnInspectorGUI ())

    报错信息:Spine.Unity.Editor.AnimationReferenceAssetEditor.OnInspectorGUI () (at Assets/Extention/Spine/E ...

  7. unity过场动画组件Timeline

    Timeline是Unity2017版本中新加入的功能,可以非常方便的进行场景动画的创建和修改,包括物体.声音.粒子.动画.特效.自定义Playable以及子Timeline等多种资源进行整合,从而能 ...

  8. Unity中的动画系统和Timeline(5) Timeline

    在前面的动画,都是控制单独的物体,比如说控制一个角色的运动.而Timeline,可以对多个物体实施动画,形成过场动画,或者电影效果.比如,很多赛车游戏比赛开始前都会播放一段开场动画,围绕自己车的几个方 ...

  9. Unity中的动画系统和Timeline(2) 按钮动画和2D精灵动画

    按钮动画 1 创建按钮后,按钮的Button组件中,Transition我们平时用的时Tint,这次选择Animation 选择Auto Generate Animation,创建一个按钮动画 2 后 ...

随机推荐

  1. Spring Cloud Eureka 你还在让它裸奔吗??

    前些天栈长在微信公众号Java技术栈分享了 Spring Cloud Eureka 最新版 实现注册中心的实战教程:Spring Cloud Eureka 注册中心集群搭建,Greenwich 最新版 ...

  2. Xapian索引-文档检索过程分析之匹配百分比

    本文属于文档检索过程分析的一部分,重点分析文档匹配百分比(percent)的计算过程. 1 percent是什么? 我们之前分析的检索demo: Xapian::Query term_one = Xa ...

  3. Entity Framework 之存储过程篇

    最近几天在搞CRUD,使用的是EF这个ORM,最近的项目中上了存储过程,就把在开发中的经验分享出来!我们先创建一个最基本的存储过程,脚本如下,这是一个不带参数的存储过程,我们从最简单的往上走! cre ...

  4. .NET Core微服务之基于Steeltoe使用Hystrix熔断保护与监控

    Tip: 此篇已加入.NET Core微服务基础系列文章索引 =>  Steeltoe目录快速导航: 1. 基于Steeltoe使用Spring Cloud Eureka 2. 基于Steelt ...

  5. 几个常用的vscode插件

    1.Vetur 可以对.vue文件格式做语法高亮,开发基于Vue项目的标配插件 2.Power Mode 在写代码时出现如烟花.粒子.火焰之类的效果,增加写代码的乐趣 3.Chinese (simpl ...

  6. Node.js学习(第一章:Node.js简介)

    Node.js是什么? Node.js 诞生于 2009 年,由 Joyent 的员工 Ryan Dahl 开发而成, 目前官网最新版本已经更新到 12.0.0版本,最新稳定的是10.15.3.Nod ...

  7. PyCharm出现TabError: inconsistent use of tabs and spaces in indentation最简单实用的解决办法

    本文使用PyCharm的格式化代码功能解决TabError: inconsistent use of tabs and spaces in indentation. 当把代码从别处复制进来PyChar ...

  8. windows系统dokuwiki安装部署设置 xampp环境配置

    简单记录一次安装dokuwiki的过程 dokuwiki下载 dokuwiki下载地址 https://download.dokuwiki.org/ 下载前有一些可选项目,版本.语言.插件,可以按照需 ...

  9. 内核中 EXPORT_SYMBOL 标志分析

    内核版本:Linux-4.19 1. EXPORT_SYMBOL 的作用: EXPORT_SYMBOL 定义的函数或者符号对全部内核代码公开,不用修改内核代码就可以在其它内核模块中直接调用,即使用 E ...

  10. 🕵️ 如何绕过 BKY 对 script 的屏蔽

    Conmajia January 20, 2019 警告 这是试验,警告个屁,请不要多多尝试用它做多余的事. 果不其然,这篇文章立刻被移出主页了,我就说嘛,BKY 哪儿会那么包容和坦然呢? 原文 do ...