Timeline调用实质

本文地址:https://blog.csdn.net/t163361/article/details/114371261
最近准备申请新星创作者,需要2000个粉丝关注,觉得文章有用的,请点一下左侧边栏的关注,谢谢。

19年左右调研Timeline的相关文档

PlayableDirector:

导演,控制timeline的播放,停止等等,

在这里插入图片描述

PlayableDirector.playableAsset:

播放资产,outputs

PlayableBinding :

绑定,记录的是outputs,

以上三者的关系就是   Director 含有一个资产,资产上有一些列绑定,其实就是 一个timeline上有好多绑定,存在一个资产上

在这里插入图片描述

Playable:

Playable是一个可以扩展的一个概念,大概的意思就是一个track就是一个playable
包括一些内置的和自定义的
在这里插入图片描述

自定义的类似这些一样的,

有用的代码:

从一个playable里提取数据并进行存储
public void Init(string name, PlayableDirector director, PlayableAsset asset)
{
director.playableAsset = asset;
this.name = name;
this.director = director;
this.asset = asset;

    bindings = new Dictionary<string, PlayableBinding>();
    clips = new Dictionary<string, Dictionary<string, PlayableAsset>>();
    foreach (var o in asset.outputs)
    {
        var trackName = o.streamName;
        bindings.Add(trackName, o);

        var track = o.sourceObject as TrackAsset;
        var clipList = track.GetClips();
        foreach (var c in clipList)
        {
            if (!clips.ContainsKey(trackName))
            {
                clips[trackName] = new Dictionary<string, PlayableAsset>();
            }
            var name2Clips = clips[trackName];
            if (!name2Clips.ContainsKey(c.displayName))
            {
                name2Clips.Add(c.displayName, c.asset as PlayableAsset);
            }
        }
    }
}


设置binding
 public void SetBinding(string trackName, Object o)
{
    director.SetGenericBinding(bindings[trackName].sourceObject, o);
}

获取
public T GetTrack(string trackName) where T : TrackAsset
{
return bindings[trackName].sourceObject as T;
}

public T GetClip<T>(string trackName, string clipName) where T : PlayableAsset
{
    if (clips.ContainsKey(trackName))
    {
        var track = clips[trackName];
        if (track.ContainsKey(clipName))
        {
            return track[clipName] as T;
        }
        else
        {
            Debug.LogError("GetClip Error, Track does not contain clip, trackName: " + trackName + ", clipName: " + clipName);
        }
    }
    else
    {
        Debug.LogError("GetClip Error, Track does not contain clip, trackName: " + trackName + ", clipName: " + clipName);
    }
    return null;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

听星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值