栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > 其他

Unity TimeLine 自定义轨道 Curve相关

其他 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Unity TimeLine 自定义轨道 Curve相关

声明一个字典 存自定义 clip的名字 和 curve信息

 public Dictionary curveDict = new Dictionary();

 public PlayableDirector Director ;
 List tracks = new List();
 public Dictionary bindingDict = new Dictionary();
private bool InitAttributes(PlayableDirector Director)
{
   if (Director == null)
   {
       return false;
   }
   bindingDict = new Dictionary() { };
	
	//根据组件 Playable Director 获得轨道
   foreach (PlayableBinding pb in Director.playableAsset.outputs)
   {

       if (!bindingDict.ContainsKey(pb.streamName))
       {
           bindingDict.Add(pb.streamName, pb);
           var track = bindingDict[pb.streamName].sourceObject as TrackAsset;

           if (track != null)
           {                   
				//根据绑定的组件,判断是否是自定义轨道
               if (pb.outputTargetType == typeof(Volume))
               {                    
                   if (!tracks.Contains(pb.sourceObject as PostProcessTrack))
                   {
                       tracks.Add(pb.sourceObject as PostProcessTrack);
                       //遍历轨道上所有的clip
                       foreach (TimelineClip clip in track.GetClips())
                       {
                       //遍历每一个clip上所有的binding
                           foreach (var binding in AnimationUtility.GetCurveBindings(clip.curves))
                           {
                               string cliptype = (clip.asset as PostProcessClip).clipName;
                               if (curveDict.Keys.Contains(cliptype))
                               {
                                   curveDict[cliptype].bindings.Add(binding);

                               }
                               else
                               {
                                   CurveInfo info = new CurveInfo(clip);                                        
                                   info.bindings.Add(binding);
                                   curveDict.Add(cliptype, info);
                               }
                           }
                       }

                   }
               }
           }

       }
   }

   return bindingDict.Count != 0;
}
public class CurveInfo
{
    public List bindings;
    public TimelineClip clip;

    public CurveInfo(TimelineClip c)
    {
        if (bindings==null)
        {
            bindings = new List() { };
        }
        clip = c;
 
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/901864.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号