Hey guys,
I made this simple example to show my problem. I create a timeline clip in code. And I’m able to edit its start time from the editor window just fine. However, as soon as I enter play, and then exit play mode. The link between my editor window start time and timeline clip is broken. What am I doing wrong?
using UnityEditor;
using UnityEngine;
using UnityEngine.Playables;
using UnityEngine.Timeline;
public class TimelineExample : EditorWindow
{
public TimelineClip m_Clip;
private const float m_FPS = 30.0f;
[MenuItem("Window/TimelineExample")]
public static void ShowWindow()
{
GetWindow(typeof(TimelineExample));
}
void Awake()
{
GameObject newObject = new GameObject();
PlayableDirector playableDirector = newObject.AddComponent<PlayableDirector>();
TimelineAsset timelineAsset = CreateInstance<TimelineAsset>();
timelineAsset.editorSettings.fps = m_FPS;
playableDirector.playableAsset = timelineAsset;
AssetDatabase.CreateAsset(timelineAsset, "Assets/timelineAsset.playable");
AnimationTrack track = timelineAsset.CreateTrack<AnimationTrack>(null, "testTrack");
m_Clip = track.CreateDefaultClip();
}
void OnGUI()
{
int startFrame = (int)(m_Clip.start * m_FPS);
int newStartFrame;
if (int.TryParse(EditorGUILayout.TextField("Start Frame:", startFrame.ToString()), out newStartFrame))
{
m_Clip.start = newStartFrame / m_FPS;
}
}
}