Example #1
0
        /// <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();
        }