示例#1
0
    /// <summary>
    /// 添加新的模块
    /// </summary>
    private void onAddNewModuleGUI()
    {
        EditorGUIUtil.DrawHeader("Add New Module");
        //添加模块视图
        GUILayout.BeginHorizontal("AS TextArea", GUILayout.Height(30));
        selectEnum = (ActModuleEnum)EditorGUILayout.EnumPopup("新模块", selectEnum, GUILayout.MaxWidth(Screen.width * 0.5f));

        GUI.backgroundColor = Color.green;
        if (GUILayout.Button("Add", GUILayout.Width(60)))
        {
            if (string.IsNullOrEmpty(actName))
            {
                return;
            }

            EditorWidgetState widget = new EditorWidgetState();
            widget.Entity  = Activator.CreateInstance(moduleMap[selectEnum]);
            widget.FoldOut = true;

            EditorGUIUtil.FindAllWidget(new List <EditorWidgetState>(), widget, widget.Entity);

            widgetList.Add(widget);
        }
        GUI.backgroundColor = Color.white;

        GUILayout.EndHorizontal();
    }
示例#2
0
    /// <summary>
    /// 右边的技能列表
    /// </summary>
    private void onRightActListGUI(EditorScrollWidgetState <object> scrollWidget)
    {
        GUILayout.BeginVertical();
        EditorGUIUtil.DrawHeader("技能列表");
        scrollWidget.Pos = GUILayout.BeginScrollView(scrollWidget.Pos);


        GUILayout.EndScrollView();
        GUILayout.EndVertical();
    }
示例#3
0
    public void OnGUI()
    {
        EditorGUIUtil.DrawHeader("Act列表");
        leftRoleTree.Pos = GUILayout.BeginScrollView(leftRoleTree.Pos, false, true);

        foreach (EditorWidgetState group in skillGroups.Values)
        {
            ActSkillGroup skillGroup = group.Entity as ActSkillGroup;
            if (skillGroup.ActList == null || skillGroup.ActList.Count <= 0)
            {
                continue;
            }

            EditorGUI.indentLevel = 0;
            //            if (group.CanRemove) EditorGUILayout.BeginHorizontal();

            group.FoldOut = EditorGUILayout.Foldout(group.FoldOut, skillGroup.GroupName);

//            if (group.CanRemove)
//            {
//                if (GUILayout.Button("X", GUILayout.Width(25)))
//                {
//
//                }
//                EditorGUILayout.EndHorizontal();
//            }

            //绘制子列表
            if (skillGroup.ActList == null || skillGroup.ActList.Count <= 0 || !group.FoldOut)
            {
                break;
            }

            EditorGUI.indentLevel++;
            List <object> removeList = null;  //删除列表
            foreach (ActItemWidget itemWidget in skillGroup.ActList)
            {
                GUILayout.BeginHorizontal();
                GUILayout.Space(20);

                if (itemWidget.IsSelect)
                {
                    GUI.backgroundColor = Color.green;
                }

                //选择编辑
                if (GUILayout.Button(itemWidget.ActName, GUILayout.MaxWidth(200)))
                {
                    if (selectActItem != null)
                    {
                        selectActItem.IsSelect = false;
                    }
                    itemWidget.IsSelect = true;
                    selectActItem       = itemWidget;

                    //更新属性编辑区
                    mainEditor.InitActItemProperty(itemWidget);
                }
                GUI.backgroundColor = Color.white;

                if (GUILayout.Button("X", GUILayout.Width(25)))
                {
                    if (removeList == null)
                    {
                        removeList = new List <object>();
                    }
                    removeList.Add(itemWidget);
                }
                GUILayout.EndHorizontal();
            }

            //更新绘制列表
            if (removeList != null)
            {
                foreach (ActItemWidget obj in removeList)
                {
                    skillGroup.ActList.Remove(obj);
                }
            }
        }
        GUILayout.EndScrollView();


        GUILayout.BeginVertical("AS TextArea", GUILayout.ExpandHeight(false), GUILayout.MaxHeight(100));
        EditorGUIUtil.DrawHeader("Editor");
        //底部操作,添加分组
        GUILayout.BeginHorizontal();
        GUILayout.Label("Act组", GUILayout.Width(60));

        string[] groupNameArr = new string[skillGroups.Count];
        skillGroups.Keys.CopyTo(groupNameArr, 0);

        if (groupNameArr.Length > 0 && (lastIndexGroup != indexGroup))
        {
            defaultGroupName = groupNameArr[indexGroup];
            lastIndexGroup   = indexGroup;
        }

        defaultGroupName = GUILayout.TextField(defaultGroupName, GUILayout.MaxWidth(100));

        if (groupNameArr.Length > 0)
        {
            indexGroup = EditorGUILayout.Popup(indexGroup, groupNameArr, GUILayout.MaxWidth(100));
            GUILayout.Space(5);
        }
        GUILayout.EndHorizontal();

        //添加新的Act
        GUILayout.BeginHorizontal();
        GUILayout.Label("添加新ACT", GUILayout.Width(60));
        actSkillType = (ActSkillTypeEnum)EditorGUILayout.EnumPopup(actSkillType, GUILayout.MaxWidth(100));

        GUILayout.EndHorizontal();

        if (actSkillType == ActSkillTypeEnum.Custom)
        {
            GUILayout.BeginHorizontal();
            GUILayout.Space(70);
            newActName = GUILayout.TextArea(newActName, GUILayout.MaxWidth(100));
            GUILayout.EndHorizontal();
        }

        //add button
        GUILayout.BeginHorizontal();
        GUILayout.Space(10);
        GUI.backgroundColor = Color.green;
        if (GUILayout.Button("Add"))
        {
            this.addSkillGroup(defaultGroupName);
            this.addSkillAct(defaultGroupName, newActName);
            newActName = "New Act";
        }
        GUI.backgroundColor = Color.white;
        GUILayout.Space(10);
        GUILayout.EndHorizontal();

        GUILayout.EndVertical();

        GUILayout.Space(5f);
    }
示例#4
0
    /// <summary>
    /// 中心区域的布局
    /// </summary>
    private void OnCenterGUI()
    {
        GUILayout.BeginVertical();

        centerScrollPos = EditorGUILayout.BeginScrollView(centerScrollPos);

        //绘制属性
        EditorGUIUtil.DrawHeader(actName + "属性");
        propertyScrollPos = EditorGUILayout.BeginScrollView(propertyScrollPos);

        List <EditorWidgetState> removes = null;

        foreach (EditorWidgetState obj in widgetList)
        {
            EditorGUI.indentLevel = 0;

            bool isRemove = EditorGUIUtil.OnGUIInstanceDisplay(obj, true);

            if (isRemove)
            {
                if (removes == null)
                {
                    removes = new List <EditorWidgetState>();
                }
                removes.Add(obj);
            }
        }

        //remove
        if (removes != null && removes.Count > 0)
        {
            foreach (EditorWidgetState ews in removes)
            {
                widgetList.Remove(ews);
            }
        }
        EditorGUILayout.EndScrollView();


        EditorGUIUtil.DrawSeparator();
        //添加新模块视图
        this.onAddNewModuleGUI();

        if (!string.IsNullOrEmpty(actName))
        {
            EditorGUIUtil.DrawSeparator();

            GUILayout.BeginHorizontal();
            GUILayout.Space(20);
            //保存数据到本地
            if (GUILayout.Button("Save"))
            {
                this.saveActFile(actGroup, actName, true);
            }
            GUILayout.Space(20);
            GUILayout.EndHorizontal();
        }

        GUILayout.EndScrollView();
        GUILayout.Space(5F);
        GUILayout.EndVertical();
    }