public static List <TrackAsset> GetTimelineTracks(TimelineAsset timeline) { // locate track list in timeline var propTracks = timeline.GetType().GetProperty("tracks", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); return(propTracks.GetValue(timeline, null) as List <TrackAsset>); }
static public List <TrackAsset> GetTrackList(TimelineAsset timelineAsset) { Assert.IsTrue(timelineAsset == true); var bf = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetField | BindingFlags.GetProperty; var type = timelineAsset.GetType(); var info = type.GetProperty("tracks", bf); // 2017.1 tracks if (info == null) { // newer version info = type.GetProperty("trackObjects", bf); } Assert.IsTrue(info.PropertyType.IsGenericType); var list = info.GetValue(timelineAsset, null); var trackAssetList = list as List <TrackAsset>; if (trackAssetList != null) { return(trackAssetList); } var scriptableObjectList = list as List <ScriptableObject>; var ret = new List <TrackAsset>(); foreach (var asset in scriptableObjectList) { ret.Add(asset as TrackAsset); } return(ret); }