/// <summary> /// 添加页签 /// </summary> /// <param name="_breadList"></param> /// <param name="_target"></param> /// <param name="_name"></param> /// <returns></returns> public static object AddBreadCrumb(List <BreadCrumbElement> _breadList, object _target, string _name) { //先看有没有当前要跳转的页面,有的话直接切到目标页签 BreadCrumbElement target = _breadList.Find((BreadCrumbElement item) => item.name == _name); //Debug.Log("target == " + target); if (target != null) { return(GoToTargetGUI(_breadList, target.target)); } else { _breadList.Add(new BreadCrumbElement(_target, _name)); return(_breadList[_breadList.Count - 1].target); } }
private void DoGraphToolbar(Rect toolbarRect) { GUILayout.BeginArea(toolbarRect); GUILayout.BeginHorizontal(EditorStyles.toolbar, new GUILayoutOption[0]); if (this.miniTool) { if (GUILayout.Button(s_Styles.visibleOFF, s_Styles.invisibleButton, new GUILayoutOption[0])) { this.miniTool = false; } GUILayout.Space(10f); } BreadCrumbElement[] elementArray = this.m_BreadCrumbs.ToArray(); for (int i = 0; i < elementArray.Length; i++) { BreadCrumbElement element = elementArray[i]; if (this.miniTool && (i == 0)) { if (EditorGUILayout.ButtonMouseDown(new GUIContent(element.name), FocusType.Keyboard, EditorStyles.toolbarPopup, new GUILayoutOption[0])) { AnimatorControllerLayer[] layers = this.animatorController.layers; GenericMenu menu = new GenericMenu(); for (int j = 0; j < layers.Length; j++) { menu.AddItem(new GUIContent(layers[j].name), false, new GenericMenu.MenuFunction2(this.SetCurrentLayer), j); } menu.AddSeparator(string.Empty); menu.AddItem(new GUIContent("Create New Layer"), false, new GenericMenu.MenuFunction(this.AddNewLayer)); menu.ShowAsContext(); } } else { EditorGUI.BeginChangeCheck(); GUILayout.Toggle(i == (elementArray.Length - 1), element.name, (i != 0) ? s_Styles.breadCrumbMid : s_Styles.breadCrumbLeft, new GUILayoutOption[0]); if (EditorGUI.EndChangeCheck()) { this.GoToBreadCrumbTarget(element.target); } } } GUILayout.FlexibleSpace(); using (new EditorGUI.DisabledScope(this.animatorController == null)) { if (Unsupported.IsDeveloperBuild() && GUILayout.Button("Select Graph", EditorStyles.toolbarButton, new GUILayoutOption[0])) { if (this.m_BreadCrumbs.Last <BreadCrumbElement>().target is AnimatorStateMachine) { Selection.activeObject = this.stateMachineGraph; } else { Selection.activeObject = this.blendTreeGraph; } } } BreadCrumbElement element2 = this.m_BreadCrumbs.LastOrDefault <BreadCrumbElement>(); if ((element2 != null) && (element2.target is AnimatorStateMachine)) { this.m_AutoLiveLink = GUILayout.Toggle(this.m_AutoLiveLink, "Auto Live Link", EditorStyles.toolbarButton, new GUILayoutOption[0]); } GUILayout.EndHorizontal(); GUILayout.EndArea(); }