通过TimeLine中 SignalTrack轨道,动态获取Signal Emitter的Time属性
在使用TimeLine构建场景动画、控制粒子效果等过程中,很多时候都需要添加信号轨道进行关键帧的事件响应来控制项目流程与步骤跳转等等;
Marker关键帧标记点会储存该位置的Time信息,若TimeLine播放到达储存的时间就会触发提前绑定在该Marker上面的事件;
有些时候我们可能需要或取Maker上面的Time值,以方便步骤跳转等相关操作;
public void Init() {
TimeLine = GetComponent<PlayableDirector>();//获取自身TimeLine轨道控制组件
foreach (var at in TimeLine.playableAsset.outputs)//获取TimeLine资源的全部轨道
{
//print(at.streamName);
if (at.streamName == "Signal Track")//通过名称判定是否是信号轨道
{
var STK = at.sourceObject as SignalTrack;
//print(STK.GetMarkerCount()); 获取该轨道上Marker的数量
//print(STK.GetMarkers()); 获取该轨道上全部的Marker
for (int i=0; i< STK.GetMarkerCount();i++) {
print(STK.GetMarker(i).time);//通过索引方法获取对应Marker的time
}
}
}
}