public void GenerateMoveClip(PlayableDirector director, int trackIndex) { List <CurvePoint> points = GetPointsInScene(); if (points.Count <= 0) { return; } string errorLog = ""; TimelineAsset asset = director.playableAsset as TimelineAsset; TrackAsset track = asset.GetOutputTrack(trackIndex); if (track == null) { errorLog = "Track Index Error"; } if (!(track is RoleMoveTrack)) { errorLog = "Track 类型错误,不是RoleMoveTrack"; } if (string.IsNullOrEmpty(errorLog)) { List <Vector3> pointsPos = points.Select(point => point.transform.position).ToList(); TimelineClip clip = track.CreateDefaultClip(); RoleMoveClip moveclip = clip.asset as RoleMoveClip; moveclip.points = pointsPos; moveclip.roleData = director.GetGenericBinding(track) as RoleData; } else { Debug.LogError(errorLog); } }
protected override Playable CreatePlayable(PlayableGraph graph, GameObject go, TimelineClip clip) { PlayableDirector director = go.GetComponent <PlayableDirector>(); RoleMoveClip moveClip = clip.asset as RoleMoveClip; moveClip.roleData = (RoleData)director.GetGenericBinding(clip.parentTrack); Playable playable = base.CreatePlayable(graph, go, clip); return(playable); }