static void ExportTimelineSkill() { foreach (var go in Selection.gameObjects) { var skill = go.GetComponent <TimeLine.TimelineManager>(); if (skill != null) { SkillExportHelper.ExportTimelineSkill(skill); } else { //Debug.Log ("未选中技能"); } } }
/// <summary> /// Draw and update the toolbar for the director control /// </summary> /// <param name="toolbarArea">The area for the toolbar</param> private void updateToolbar(Rect toolbarArea) { EditorGUILayout.BeginHorizontal(EditorStyles.toolbar); // If there are no cutscenes, then only give option to create a new cutscene. if (GUILayout.Button(CREATE, EditorStyles.toolbarDropDown, GUILayout.Width(60))) { GenericMenu createMenu = new GenericMenu(); createMenu.AddItem(empty_Skill, false, createEmptyCutscene); if (cutscene != null) { createMenu.AddSeparator(string.Empty); createMenu.AddItem(new_cutscene_trigger, false, createCutsceneTrigger); createMenu.AddSeparator(string.Empty); Type[] subTypes = DirectorHelper.GetAllSubTypes(typeof(TrackGroup)); for (int i = 0; i < subTypes.Length; i++) { TrackGroupContextData userData = getContextDataFromType(subTypes[i]); string text = string.Format(userData.Label); createMenu.AddItem(new GUIContent(text), false, new GenericMenu.MenuFunction2(AddTrackGroup), userData); } } createMenu.DropDown(new Rect(5, TOOLBAR_HEIGHT, 0, 0)); } // Cutscene selector cachedCutscenes = GameObject.FindObjectsOfType <TimelineManager>(); if (cachedCutscenes != null && cachedCutscenes.Length > 0) { // Get cutscene names GUIContent[] cutsceneNames = new GUIContent[cachedCutscenes.Length]; for (int i = 0; i < cachedCutscenes.Length; i++) { cutsceneNames[i] = new GUIContent(cachedCutscenes[i].name); } // Sort alphabetically Array.Sort(cutsceneNames, delegate(GUIContent content1, GUIContent content2) { return(string.Compare(content1.text, content2.text)); }); int count = 1; // Resolve duplicate names for (int i = 0; i < cutsceneNames.Length - 1; i++) { int next = i + 1; while (next < cutsceneNames.Length && string.Compare(cutsceneNames[i].text, cutsceneNames[next].text) == 0) { cutsceneNames[next].text = string.Format("{0} (duplicate {1})", cutsceneNames[next].text, count++); next++; } count = 1; } Array.Sort(cachedCutscenes, delegate(TimelineManager c1, TimelineManager c2) { return(string.Compare(c1.name, c2.name)); }); // Find the currently selected cutscene. for (int i = 0; i < cachedCutscenes.Length; i++) { if (cutscene != null && cutscene.GetInstanceID() == cachedCutscenes[i].GetInstanceID()) { popupSelection = i; } } // Show the popup int tempPopup = EditorGUILayout.Popup(popupSelection, cutsceneNames, EditorStyles.toolbarPopup); if (cutscene == null || tempPopup != popupSelection || cutsceneInstanceID != cachedCutscenes[Math.Min(tempPopup, cachedCutscenes.Length - 1)].GetInstanceID()) { popupSelection = tempPopup; popupSelection = Math.Min(popupSelection, cachedCutscenes.Length - 1); FocusCutscene(cachedCutscenes[popupSelection]); } } if (cutscene != null) { if (GUILayout.Button(pickerImage, EditorStyles.toolbarButton, GUILayout.Width(24))) { Selection.activeObject = cutscene; } if (GUILayout.Button(refreshImage, EditorStyles.toolbarButton, GUILayout.Width(24))) { cutscene.Refresh(); } if (GUILayout.Button("导出技能", EditorStyles.toolbarButton, GUILayout.Width(50))) { SkillExportHelper.ExportTimelineSkill(cutscene); } if (Event.current.control && Event.current.keyCode == KeyCode.Space) { cutscene.Refresh(); Event.current.Use(); } } GUILayout.FlexibleSpace(); if (betaFeaturesEnabled) { Texture resizeTexture = cropImage; if (directorControl.ResizeOption == DirectorEditor.ResizeOption.Scale) { resizeTexture = scaleImage; } Rect resizeRect = GUILayoutUtility.GetRect(new GUIContent(resizeTexture), EditorStyles.toolbarDropDown, GUILayout.Width(32)); if (GUI.Button(resizeRect, new GUIContent(resizeTexture, "Resize Option"), EditorStyles.toolbarDropDown)) { GenericMenu resizeMenu = new GenericMenu(); string[] names = Enum.GetNames(typeof(DirectorEditor.ResizeOption)); for (int i = 0; i < names.Length; i++) { resizeMenu.AddItem(new GUIContent(names[i]), directorControl.ResizeOption == (DirectorEditor.ResizeOption)i, chooseResizeOption, i); } resizeMenu.DropDown(new Rect(resizeRect.x, TOOLBAR_HEIGHT, 0, 0)); } } bool tempSnapping = GUILayout.Toggle(isSnappingEnabled, snapImage, EditorStyles.toolbarButton, GUILayout.Width(24)); if (tempSnapping != isSnappingEnabled) { isSnappingEnabled = tempSnapping; directorControl.IsSnappingEnabled = isSnappingEnabled; } //GUILayout.Button(rollingEditImage, EditorStyles.toolbarButton, GUILayout.Width(24)); GUILayout.Space(10f); if (GUILayout.Button(rescaleImage, EditorStyles.toolbarButton, GUILayout.Width(24))) { directorControl.Rescale(); } if (GUILayout.Button(new GUIContent(zoomInImage, "Zoom In"), EditorStyles.toolbarButton, GUILayout.Width(24))) { directorControl.ZoomIn(); } if (GUILayout.Button(zoomOutImage, EditorStyles.toolbarButton, GUILayout.Width(24))) { directorControl.ZoomOut(); } GUILayout.Space(10f); Color temp = GUI.color; GUI.color = directorControl.InPreviewMode ? Color.red : temp; directorControl.InPreviewMode = GUILayout.Toggle(directorControl.InPreviewMode, PREVIEW_MODE, EditorStyles.toolbarButton, GUILayout.Width(150)); GUI.color = temp; GUILayout.Space(10); //设置窗口 if (GUILayout.Button(settingsImage, EditorStyles.toolbarButton, GUILayout.Width(30))) { //EditorWindow.GetWindow<DirectorSettingsWindow>(); } // Check if the Welcome Window exists and if so, show an icon for it. var helpWindowType = Type.GetType("CinemaSuite.CinemaSuiteWelcome"); if (helpWindowType != null) { if (GUILayout.Button(new GUIContent("?", "Help"), EditorStyles.toolbarButton)) { EditorWindow.GetWindow(helpWindowType); } } EditorGUILayout.EndHorizontal(); }