Пример #1
0
        void OnGUI()
        {
            GUIStyle boxStyle = new GUIStyle("box");

            var width  = position.size.x - boxStyle.border.horizontal;
            var height = position.size.y - boxStyle.border.vertical;

            var innerBoxWidth  = width - (boxStyle.padding.horizontal + boxStyle.border.horizontal);
            var innerBoxHeight = height - (boxStyle.padding.vertical + boxStyle.border.vertical);

            MyGUIExtend.Instance.ToolbarButton(new Dictionary <string, Action>
            {
                {
                    "读取", Load
                },
                {
                    "保存", Save
                }
            });

            EditorGUILayout.BeginHorizontal();

            EditorGUILayout.BeginVertical(boxStyle, GUILayout.Width(innerBoxWidth / 3), GUILayout.ExpandHeight(true));
            int removeIndex = -1;
            int copyIndex   = -1;

            SearchContext = GUILayout.TextField(SearchContext);
            verVector2    = GUILayout.BeginScrollView(verVector2);


            if (!string.IsNullOrEmpty(SearchContext))
            {
                for (int i = 0; i < animEffectSaveData.animEffectDataList.Count; i++)
                {
                    if (Regex.IsMatch(animEffectSaveData.animEffectDataList[i].id.ToLower(), SearchContext))
                    {
                        ListID(i);
                    }
                }
            }
            else
            {
                for (int i = 0; i < animEffectSaveData.animEffectDataList.Count; i++)
                {
                    GUILayout.BeginHorizontal();
                    ListID(i);
                    GUILayout.EndHorizontal();
                }
            }


            GUILayout.EndScrollView();

            if (MyGUI.Button("+"))
            {
                animEffectSaveData.animEffectDataList.Add(new AnimEffectData());
            }

            EditorGUILayout.EndVertical();


            EditorGUILayout.BeginVertical(boxStyle, GUILayout.Width(innerBoxWidth / 6), GUILayout.ExpandHeight(true));
            //  二级
            AnimEffectData animEffectData;

            if (animEffectSaveData.animEffectDataList.TryGet(focusIndex, out animEffectData))
            {
//                    int removeIndex = -1;
//                    int copyIndex = -1;

                for (int i = 0; i < animEffectData.animEffectDataList.Count; i++)
                {
                    GUILayout.BeginHorizontal();

                    int Index = MyGUIExtend.Instance.ListSingleButton("AnimEditor_1", i + ":" + animEffectData.animEffectDataList[i].id,
                                                                      i, (
                                                                          () =>
                    {
                        subFocusIndex = i;
                    }));

                    MyGUIExtend.Instance.Mouse_RightDrop(new Dictionary <string, Action>
                    {
                        {
                            "复制", (() =>
                            {
                                animEffectData.animEffectDataList.Add(
                                    Tools.DepthClone(animEffectData.animEffectDataList[Index]));
                            })
                        },
                        {
                            "删除", (() => { animEffectData.animEffectDataList.RemoveAt(Index); })
                        }
                    });


                    GUILayout.EndHorizontal();
                }

                if (animEffectData.animEffectType == AnimEffectData.AnimEffectType.Group || animEffectData.animEffectType == AnimEffectData.AnimEffectType.Random)
                {
                    if (MyGUI.Button("+"))
                    {
                        animEffectData.animEffectDataList.Add(new AnimEffectData());
                    }
                }
            }
            EditorGUILayout.EndVertical();



            EditorGUILayout.BeginVertical(boxStyle, GUILayout.Width(innerBoxWidth / 2), GUILayout.ExpandHeight(true));
            AnimEffectData animeffectData;

            if (animEffectSaveData.animEffectDataList.TryGet(focusIndex, out animeffectData))
            {
                if (subFocusIndex >= 0)
                {
                    if (animeffectData.animEffectDataList.TryGet(subFocusIndex, out animeffectData))
                    {
                    }
                    else
                    {
                        // 找不到subFocusIndex位置的AnimEffectData
                        return;
                    }
                }

                animEffectDataFieldScrollPos = MyGUI.AnimEffectDataField(animeffectData, animEffectDataFieldScrollPos);


                if (Application.isPlaying)
                {
                    testTimes       = MyGUI.IntFieldWithTitle("测试次数", testTimes);
                    testInterval    = MyGUI.FloatFieldWithTitle("间隔时间", testInterval);
                    moveOrientation = MyGUI.Vector3WithTitle("移动方向", moveOrientation);
                    testPosition    = MyGUI.Vector3WithTitle("位置", testPosition);
                    testFlip        = MyGUI.ToggleWithTitle("翻转", testFlip);


                    if (MyGUI.Button("测试特效"))
                    {
                        EditorCoroutineSequenceRunner.RemoveCoroutine("AnimEffectTest");
                        EditorCoroutineSequenceRunner.AddCoroutineIfNot("AnimEffectTest", TestAnimEffect(animeffectData, testTimes, testInterval));
                    }
                }
            }
            EditorGUILayout.EndVertical();


            EditorGUILayout.EndHorizontal();
        }