protected virtual void OnDrawGizmos() { #if UNITY_2018_1_OR_NEWER TimelineLiteAsset inspectedAsset = TimelineEditor.inspectedAsset as TimelineLiteAsset; #else TimelineLiteAsset inspectedAsset = UnityEditor.Timeline.TimelineEditor.timelineAsset as TimelineLiteAsset; #endif if (inspectedAsset == null) { return; } // 始终调用 foreach (var trackAsset in inspectedAsset.GetOutputTracks()) { TLBasicTrackAsset basicTrackAsset = trackAsset as TLBasicTrackAsset; if (basicTrackAsset == null) { continue; } foreach (var timelineClip in trackAsset.GetClips()) { IDrawGizmos asset = timelineClip.asset as IDrawGizmos; if (asset != null) { asset.DrawGizmos_Lite(Playable, timelineClip, IndicatorFrame); } } } foreach (var timelineClip in TimelineEditor.selectedClips) { IDrawGizmos asset = timelineClip.asset as IDrawGizmos; if (asset != null) { asset.DrawGizmosSelected_Lite(Playable, timelineClip, IndicatorFrame); } } }
/// <summary> /// Registers an object for gizmo drawing. /// The DrawGizmos method on the object will be called every frame until it is destroyed (assuming there are cameras with gizmos enabled). /// </summary> public static void Register(IDrawGizmos item) { gizmoDrawers.Add(item); }