Example #1
0
        private ScenarioWidgetState matchCommand(string cmd)
        {
            Type type;
            ScenarioCommandTypes commandkey = (ScenarioCommandTypes)Enum.Parse(typeof(ScenarioCommandTypes), cmd);

            type = _commandDic[commandkey];
            ScenarioWidgetState state = new ScenarioWidgetState();

            state.FoldOut     = true;
            state.type        = type;
            state.CommandType = commandkey;
            state.Entitys.Add((BaseCommandModel)Activator.CreateInstance(type));
            return(state);
        }
        public void OnGUI()
        {
            EditorGUI.indentLevel = 0;
            m_scrollPositionSI    = GUILayout.BeginScrollView(m_scrollPositionSI, false, true);

            _FoldOut = EditorGUILayout.Foldout(_FoldOut, "命令属性");

            if (_FoldOut)
            {
                EditorGUI.indentLevel += 1;
                for (int i = 0; i < _cmds.Count; i++)
                {
                    ScenarioWidgetState obj = _cmds[i];
                    if (obj.Entitys.Count <= 0)
                    {
                        return;
                    }
                    string classDisName = "";

                    FieldInfo filedInfo = typeof(ScenarioCommandTypes).GetField(obj.CommandType.ToString());

                    object[] commandTypeAttrs = filedInfo.GetCustomAttributes(typeof(DisplayNameAttribute), false);
                    classDisName = commandTypeAttrs.Length > 0 ? ((DisplayNameAttribute)commandTypeAttrs[0]).DisplayName : filedInfo.Name;
                    if (commandTypeAttrs.Length > 0)
                    {
                        classDisName = ((DisplayNameAttribute)commandTypeAttrs[0]).DisplayName;
                    }

                    obj.FoldOut = EditorGUILayout.Foldout(obj.FoldOut, classDisName);
                    if (obj.FoldOut)
                    {
                        for (int j = 0; j < obj.Entitys.Count; j++)
                        {
                            EditorGUI.indentLevel += 1;

                            Type type = obj.Entitys[j].GetType();

                            bool flag = CreateRadioGroupView(type, obj.Entitys[j]);

                            if (!flag)
                            {
                                CreateCommonView(type, obj.Entitys[j]);
                            }

                            if (j == obj.Entitys.Count - 1)
                            {
                                object[] multuiAttrs = type.GetCustomAttributes(typeof(MultiAttribute), false);
                                if (multuiAttrs.Length > 0)
                                {
                                    if (GUILayout.Button("Add"))
                                    {
                                        obj.Entitys.Add((BaseCommandModel)Activator.CreateInstance(obj.type));
                                    }
                                }
                            }
                            EditorGUI.indentLevel -= 1;
                        }
                    }
                }
            }

            GUILayout.EndScrollView();
        }
Example #3
0
        public void OnGUI()
        {
            EditorGUILayout.BeginHorizontal();
            //GUILayout.Label("导出路径选择");
            if (GUILayout.Button("导入", GUILayout.Width(100)))
            {
                if (ImportData())
                {
                    _cmds.Clear();
                    commanList.Clear();
                }
            }
            if (GUILayout.Button("保存", GUILayout.Width(100)))
            {
                SaveData();
            }
            if (GUILayout.Button("导出", GUILayout.Width(100)))
            {
                ExportData();
            }
            EditorGUILayout.EndHorizontal();

            m_scrollPosition = GUILayout.BeginScrollView(m_scrollPosition, false, true);
            GUILayout.BeginVertical();
            for (int i = 0; i < _cmds.Count; i++)
            {
                GUILayout.BeginHorizontal();
                if (GUILayout.Button(_cmds[i], GUILayout.Width(120)))
                {
                    updatePropertyWindow();
                }
                if (GUILayout.Button("删除", GUILayout.Width(80)))
                {
                    _cmds.RemoveAt(i);
                    commanList.RemoveAt(i);
                    updatePropertyWindow();
                }
                if (GUILayout.Button("插入", GUILayout.Width(80)))
                {
                    _cmds.Insert(i, options[index]);
                    ScenarioWidgetState state = matchCommand(options[index]);
                    commanList.Insert(i, state);
                    updatePropertyWindow();
                }
                GUILayout.EndHorizontal();
            }
            GUILayout.EndVertical();


            EditorGUILayout.BeginHorizontal();
            if (GUILayout.Button("添加命令"))
            {
                Debug.Log("添加命令" + options[index]);
                _cmds.Add(options[index]);
                ScenarioWidgetState state = matchCommand(options[index]);
                commanList.Add(state);
                updatePropertyWindow();
            }

            index = EditorGUILayout.Popup(index, options);

            EditorGUILayout.EndHorizontal();
            GUILayout.EndScrollView();
        }