private static void OnScene(SceneView sceneview) { var currentEvent = Event.current; if (currentEvent.GetTypeForControl(EditorGUIUtility.GetControlID(FocusType.Passive)) == EventType.keyDown) { if (currentEvent.keyCode == KeyCode.Space) { if (ShowContextMenu()) { currentEvent.Use(); } } } GameObject[] gameObjects = FindObjectsOfType <GameObject>(); foreach (GameObject go in gameObjects) { if (PrefabUtility.GetPrefabType(go) == PrefabType.Prefab) { continue; } foreach (MonoBehaviour mb in go.GetComponents <MonoBehaviour>()) { ISceneGUI sceneGui = mb as ISceneGUI; if (sceneGui != null) { sceneGui.OnSceneGUI(); } } } }
protected virtual void OnSceneGUI(SceneView _sceneView) { if (Playable == null) { return; } #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 basicTrackAsset.GetClips()) { ISceneGUI asset = timelineClip.asset as ISceneGUI; if (asset != null) { asset.SceneGUI(Playable, timelineClip, indicatorFrame); } } } #if UNITY_2019_1_OR_NEWER // 只有选中后调用 foreach (var timelineClip in TimelineEditor.selectedClips) { ISceneGUI asset = timelineClip.asset as ISceneGUI; if (asset != null) { asset.SceneGUISelected(Playable, timelineClip, indicatorFrame); } } #endif }