Exemple #1
0
        public override void OnInspectorGUI()
        {
            JTrajectoryClipData clip = (JTrajectoryClipData)target;
            var serializedProperty   = serializedObject.FindProperty("Target");

            EditorGUILayout.PropertyField(serializedProperty);

            var serializedStartTime = serializedObject.FindProperty("startTime");

            EditorGUILayout.PropertyField(serializedStartTime);
            var serializedplaybackDuration = serializedObject.FindProperty("playbackDuration");

            EditorGUILayout.PropertyField(serializedplaybackDuration);
            var serializedlooping = serializedObject.FindProperty("looping");

            EditorGUILayout.PropertyField(serializedlooping);

            EditorDrawUtility.DrawSkillEffectUnit(clip.effectunit);
            EditorDrawUtility.DrawSkillUnit(clip.skillunit);

            if (serializedObject.ApplyModifiedProperties())
            {
                JWindow[] windows = Resources.FindObjectsOfTypeAll <JWindow>();
                foreach (var window in windows)
                {
                    window.Repaint();
                }
            }
        }
        public override void OnInspectorGUI()
        {
            serializedObject.Update();

            var serializedProperty = serializedObject.GetIterator();

            serializedProperty.Next(true);

            while (serializedProperty.NextVisible(true))
            {
                if (serializedProperty.name == "effectDuration")
                {
                    GUI.enabled = false;
                    EditorGUILayout.PropertyField(serializedProperty);
                    GUI.enabled = true;
                }
                else
                {
                    EditorGUILayout.PropertyField(serializedProperty);
                }
            }
            //if (serializedProperty.name == "effectConfig")
            {
                JParticleClipData             ss     = (JParticleClipData)target;
                CySkillEditor.EffectConfigure effect = ss.EffectConfig;
                EditorDrawUtility.DrawEffectConfigure(effect);
            }
            var particleTrack    = serializedObject.FindProperty("track").objectReferenceValue as JParticleTrack;
            var targetObject     = serializedObject.FindProperty("targetObject").objectReferenceValue;
            var targetGameObject = targetObject as GameObject;

            if (!particleTrack)
            {
                return;
            }

            if (!targetGameObject)
            {
                return;
            }


            if (serializedObject.ApplyModifiedProperties())
            {
                JWindow[] windows = Resources.FindObjectsOfTypeAll <JWindow>();
                foreach (var window in windows)
                {
                    window.Repaint();
                }
            }
        }
Exemple #3
0
        private void DrawUnitList(float width)
        {
            //unit list
            GUILayout.BeginVertical("Box");
            EditorGUILayout.LabelField("SkillUnit List");
            List <SkillUnit.SkillUnit> skillinits = EditorDataContainer.allSkillUnits.units;

            unitScrollPos = EditorGUILayout.BeginScrollView(unitScrollPos);
            //列表
            if (unitList == null)
            {
                // 加入数据数组
                unitList = new ReorderableList(skillinits, typeof(SkillUnit.SkillUnit), false, false, true, true);
            }
            // 绘制Item显示列表
            unitList.drawElementCallback = (Rect rect, int index, bool isActive, bool isFocused) =>
            {
                SkillUnit.SkillUnit element = skillinits[index];
                Rect drawRect = new Rect(rect.x, rect.y + 20, width - 30, 600);
                GUILayout.BeginArea(drawRect);
                GUILayout.Label("index: " + index);
                EditorDrawUtility.DrawSkillUnit(DataConvert.ConvertSkillUnit(element));
                GUILayout.EndArea();
                EditorGUILayout.Separator();
            };
            unitList.elementHeight = 600;
            // 绘制表头
            unitList.drawHeaderCallback = (Rect rect) =>
            {
                EditorGUI.LabelField(rect, "SkillUnitList");
            };
            // 选择回调
            unitList.onSelectCallback = (ReorderableList l) =>
            {
                SelectSkillUnit = l.index;
            };
            unitList.DoLayoutList();
            EditorGUILayout.EndScrollView();
            GUILayout.EndVertical();
        }
 //绘制特效列表
 public static void DrawCameraActionList(List <SkillCameraAction> beginEffect, Vector2 beginScrollPos, out Vector2 oScrollPos, float width, ref ReorderableList beginEffectList)
 {
     EditorGUILayout.BeginVertical();
     //起手动作特效
     oScrollPos = EditorGUILayout.BeginScrollView(beginScrollPos);
     if (beginEffectList == null)
     {
         // 加入数据数组
         beginEffectList = new ReorderableList(beginEffect, typeof(SkillCameraAction), false, false, true, true);
     }
     beginEffectList.elementHeight = 280;
     if (beginEffect == null || beginEffect.Count == 0)
     {
         beginEffectList.elementHeight = 20;
     }
     // 绘制Item显示列表
     beginEffectList.drawElementCallback = (Rect rect, int index, bool isActive, bool isFocused) =>
     {
         SkillCameraAction element = (SkillCameraAction)beginEffect[index];
         Rect drawRect             = new Rect(rect.x, rect.y + 20, width - 30, 280);
         GUILayout.BeginArea(drawRect);
         GUILayout.Label("index: " + index);
         EditorDrawUtility.DrawCameraAction(element);
         GUILayout.EndArea();
     };
     beginEffectList.onRemoveCallback = (ReorderableList l) =>
     {
         l.list.RemoveAt(l.index);
     };
     beginEffectList.onAddCallback = (ReorderableList l) =>
     {
         l.list.Add(new SkillCameraAction());
     };
     beginEffectList.DoLayoutList();
     EditorGUILayout.EndScrollView();
     EditorGUILayout.EndVertical();
 }
Exemple #5
0
        public override void OnInspectorGUI()
        {
            JEffectClipData clip = (JEffectClipData)target;
            var             serializedProperty = serializedObject.FindProperty("effectType");

            EditorGUILayout.PropertyField(serializedProperty);

            var startTime = serializedObject.FindProperty("startTime");

            EditorGUILayout.PropertyField(startTime);
            var playbackDuration = serializedObject.FindProperty("playbackDuration");

            EditorGUILayout.PropertyField(playbackDuration);
            var serializedlooping = serializedObject.FindProperty("looping");

            EditorGUILayout.PropertyField(serializedlooping);

            float starttime = 0.5f;
            float phasetime = 0.5f;

            if (clip.effectType == EffectType.Particle || clip.effectType == EffectType.Trajectory)
            {
                starttime = clip.effectunit.artEffect.beginTime / 1000f;
                phasetime = clip.effectunit.artEffect.phaseTime / 1000f;
            }
            else
            if (clip.effectType == EffectType.Camera)
            {
                starttime = clip.cameraAction.delay;
                phasetime = clip.cameraAction.phaseTime;
            }

            bool apply = serializedObject.ApplyModifiedProperties();

            if (apply)
            {
                clip.PlaybackDuration = serializedObject.FindProperty("playbackDuration").floatValue;
                clip.StartTime        = serializedObject.FindProperty("startTime").floatValue;
            }
            if (clip.effectType == EffectType.Particle)
            {
                EditorDrawUtility.DrawSkillEffectUnit(clip.effectunit);
                if (clip.effectunit.artEffect.beginTime / 1000f != starttime || clip.effectunit.artEffect.phaseTime / 1000f != phasetime)
                {
                    clip.PlaybackDuration = (clip.effectunit.artEffect.phaseTime / 1000f);
                    clip.StartTime        = (clip.effectunit.artEffect.beginTime / 1000f);
                    apply = true;
                }
            }
            if (clip.effectType == EffectType.Camera)
            {
                var TargetCamera = serializedObject.FindProperty("TargetCamera");
                EditorGUILayout.PropertyField(TargetCamera);
                EditorDrawUtility.DrawCameraAction(clip.cameraAction);
                if (clip.cameraAction.delay != starttime || clip.cameraAction.phaseTime != phasetime)
                {
                    clip.PlaybackDuration = clip.cameraAction.phaseTime;
                    clip.StartTime        = clip.cameraAction.delay;
                    apply = true;
                }
            }
            if (clip.effectType == EffectType.Trajectory)
            {
                var Target = serializedObject.FindProperty("Target");
                EditorGUILayout.PropertyField(Target);
                var targetObject = serializedObject.FindProperty("targetObject");
                EditorGUILayout.PropertyField(targetObject);
                EditorDrawUtility.DrawSkillEffectUnit(clip.effectunit);
                EditorDrawUtility.DrawSkillUnit(clip.skillunit);
                if (clip.effectunit.artEffect.beginTime / 1000f != starttime || clip.effectunit.artEffect.phaseTime / 1000f != phasetime)
                {
                    clip.PlaybackDuration = clip.effectunit.artEffect.phaseTime / 1000f;
                    clip.StartTime        = clip.effectunit.artEffect.beginTime / 1000f;
                    apply = true;
                }
            }
            if (clip.effectType == EffectType.Sound)
            {
                var sound = serializedObject.FindProperty("sound");
                EditorGUILayout.PropertyField(sound);
                if ((AudioClip)sound.objectReferenceValue != null)
                {
                    EditorGUILayout.FloatField("Duration", ((AudioClip)sound.objectReferenceValue).length);
                }
                var targetObject = serializedObject.FindProperty("targetObject");
                EditorGUILayout.PropertyField(targetObject);

                if (serializedObject.ApplyModifiedProperties())
                {
                    serializedObject.ApplyModifiedProperties();
                    serializedObject.FindProperty("playbackDuration").floatValue = ((AudioClip)sound.objectReferenceValue).length;
                    apply = true;
                }
            }
            if (clip.effectType == EffectType.Animation)
            {
                var targetObject      = serializedObject.FindProperty("targetObject");
                var animController    = serializedObject.FindProperty("animController");
                var stateNameProperty = serializedObject.FindProperty("stateName");
                var layer             = serializedObject.FindProperty("layer");

                GameObject targetObj = (GameObject)targetObject.objectReferenceValue;
                apply = EditorGUILayout.PropertyField(targetObject);
                RuntimeAnimatorController anim0 = (RuntimeAnimatorController)animController.objectReferenceValue;
                Animator anim = targetObj.GetComponent <Animator>();
                if (anim != null)
                {
                    if (anim0 != null)
                    {
                        anim.runtimeAnimatorController = anim0;
                    }
                    if (anim0 == null && anim.runtimeAnimatorController != null)
                    {
                        animController.objectReferenceValue = anim.runtimeAnimatorController;
                    }
                    apply = true;
                }
                EditorGUILayout.PropertyField(animController);

                var availableLayerNames = MecanimAnimationUtility.GetAllLayerNames(targetObj);
                var olayer = EditorGUILayout.Popup("Layer", layer.intValue, availableLayerNames.ToArray());
                if (olayer != layer.intValue)
                {
                    layer.intValue = olayer;
                }
                var availableStateNames = MecanimAnimationUtility.GetAllStateNames(targetObj, layer.intValue);
                var existingState       = -1;
                var existingStateName   = stateNameProperty.stringValue;
                if (availableStateNames.Contains(existingStateName))
                {
                    existingState = availableStateNames.IndexOf(existingStateName);
                }
                var newState = EditorGUILayout.Popup("StateName", existingState, availableStateNames.ToArray());
                if (newState != existingState)
                {
                    stateNameProperty.stringValue = availableStateNames[newState];
                    float duration = MecanimAnimationUtility.GetStateDurationWithAnimatorController(stateNameProperty.stringValue, (RuntimeAnimatorController)animController.objectReferenceValue);
                    clip.PlaybackDuration = duration;
                    serializedObject.FindProperty("playbackDuration").floatValue = duration;
                    apply = true;
                }
            }
            if (apply)
            {
                JWindow[] windows = Resources.FindObjectsOfTypeAll <JWindow>();
                foreach (var window in windows)
                {
                    window.Repaint();
                }
            }
        }
Exemple #6
0
        private void OnGUI()
        {
            LoadFbx();
            LoadEffect();
            EditorGUILayout.BeginHorizontal();
            if (showUnitList)
            {
                EditorGUILayout.BeginVertical();
                GUILayout.Box("UnitList", USEditorUtility.ContentBackground, GUILayout.ExpandWidth(true), GUILayout.ExpandHeight(true));
                if (UnityEngine.Event.current.type == EventType.Repaint)
                {
                    if (unitRect != GUILayoutUtility.GetLastRect())
                    {
                        unitRect = GUILayoutUtility.GetLastRect();
                        this.Repaint();
                    }
                }
                EditorGUILayout.EndVertical();
            }

            if (showArtList)
            {
                EditorGUILayout.BeginVertical();
                GUILayout.Box("ArtList", USEditorUtility.ContentBackground, GUILayout.ExpandWidth(true), GUILayout.ExpandHeight(true));
                if (UnityEngine.Event.current.type == EventType.Repaint)
                {
                    if (artRect != GUILayoutUtility.GetLastRect())
                    {
                        artRect = GUILayoutUtility.GetLastRect();
                        this.Repaint();
                    }
                }
                EditorGUILayout.EndVertical();
            }

            EditorGUILayout.BeginVertical();
            GUILayout.Box("SkillUnit", USEditorUtility.ContentBackground, GUILayout.ExpandWidth(true), GUILayout.ExpandHeight(true));
            if (UnityEngine.Event.current.type == EventType.Repaint)
            {
                if (skillunitRect != GUILayoutUtility.GetLastRect())
                {
                    skillunitRect = GUILayoutUtility.GetLastRect();
                    this.Repaint();
                }
            }
            EditorGUILayout.EndVertical();


            EditorGUILayout.BeginVertical();
            GUILayout.Box("SkillArt", USEditorUtility.ContentBackground, GUILayout.ExpandWidth(true), GUILayout.ExpandHeight(true));
            if (UnityEngine.Event.current.type == EventType.Repaint)
            {
                if (skillartRect != GUILayoutUtility.GetLastRect())
                {
                    skillartRect = GUILayoutUtility.GetLastRect();
                    this.Repaint();
                }
            }
            EditorGUILayout.EndVertical();

            //EditorGUILayout.BeginVertical();
            GUILayout.Box("Buttons", USEditorUtility.ContentBackground, GUILayout.MaxWidth(150), GUILayout.ExpandHeight(true));
            if (UnityEngine.Event.current.type == EventType.Repaint)
            {
                if (buttonrect != GUILayoutUtility.GetLastRect())
                {
                    buttonrect = GUILayoutUtility.GetLastRect();
                    this.Repaint();
                }
            }
            // EditorGUILayout.EndVertical();


            EditorGUILayout.EndHorizontal();

            if (showUnitList)
            {
                GUILayout.BeginArea(unitRect);
                DrawUnitList(unitRect.width);
                GUILayout.EndArea();
            }

            if (showArtList)
            {
                GUILayout.BeginArea(artRect);
                DrawSkillArtList(artRect.width);
                GUILayout.EndArea();
            }

            GUILayout.BeginArea(skillunitRect);
            EditorDrawUtility.DrawSkillUnit(EditorDataContainer.currentskillAssetData.skillUnit);
            GUILayout.EndArea();

            GUILayout.BeginArea(skillartRect);
            DrawSkillArtEffect(EditorDataContainer.currentskillAssetData.skillArt, skillartRect.width);
            GUILayout.EndArea();

            GUILayout.BeginArea(buttonrect);
            DrawButtons();
            GUILayout.EndArea();
        }
Exemple #7
0
        private void DrawSkillArtList(float width)
        {
            GUILayout.BeginVertical("Box");
            EditorGUILayout.LabelField("SkillArtEffect List");
            LoadFbx();
            LoadEffect();
            // 设置保存文件名字
            List <SkillUnit.SkillArt> skillart = EditorDataContainer.allSkillUnits.arts;

            artScrollPos = EditorGUILayout.BeginScrollView(artScrollPos);
            //列表
            if (artList == null)
            {
                // 加入数据数组
                artList = new ReorderableList(skillart, typeof(SkillUnit.SkillArt), false, false, true, true);
            }
            // 绘制Item显示列表
            artList.drawElementCallback = (Rect rect, int index, bool isActive, bool isFocused) =>
            {
                SkillUnit.SkillArt element = skillart[index];
                Rect drawRect = new Rect(rect.x, rect.y + 20, width - 30, 1200);
                GUILayout.BeginArea(drawRect);
                EditorGUILayout.TextField("Id:" + element.id, EditorDataContainer.GetSkillStringById(element.id));
                EditorGUILayout.FloatField("guideFadeTime:", element.guideFadeTime);
                EditorGUILayout.TextField("guideAction:", element.guideAction);
                EditorGUILayout.TextField("guidingAction:", element.guidingAction);
                EditorGUILayout.TextField("endAction:", element.endAction);

                for (int i = 0; i < element.beginEffect.Count; i++)
                {
                    if (element.beginEffect[i] != null)
                    {
                        EditorGUILayout.LabelField("beginEffect:" + i);
                        EditorDrawUtility.DrawSkillArtEffect(DataConvert.ConvertSkillArtEffect(element.beginEffect[i]), null, null);
                    }
                }
                if (element.unitEffect != null)
                {
                    EditorGUILayout.LabelField("unitEffect:");
                    EditorDrawUtility.DrawSkillArtEffect(DataConvert.ConvertSkillArtEffect(element.unitEffect), null, null);
                }
                if (element.tipEffect != null)
                {
                    EditorGUILayout.LabelField("tipEffect:");
                    EditorDrawUtility.DrawSkillArtEffect(DataConvert.ConvertSkillArtEffect(element.tipEffect), null, null);
                }
                if (element.hitEffect != null)
                {
                    EditorGUILayout.LabelField("hitEffect:");
                    EditorDrawUtility.DrawSkillArtEffect(DataConvert.ConvertSkillArtEffect(element.hitEffect), null, null);
                }
                if (element.beginCameraAction != null)
                {
                    EditorGUILayout.LabelField("beginCameraAction:");
                    EditorDrawUtility.DrawCameraAction(DataConvert.ConvertCameraAction(element.beginCameraAction));
                }
                if (element.moveCameraAction != null)
                {
                    EditorGUILayout.LabelField("moveCameraAction:");
                    EditorDrawUtility.DrawCameraAction(DataConvert.ConvertCameraAction(element.moveCameraAction));
                }
                if (element.hitCameraAction != null)
                {
                    EditorGUILayout.LabelField("hitCameraAction:");
                    EditorDrawUtility.DrawCameraAction(DataConvert.ConvertCameraAction(element.hitCameraAction));
                }
                GUILayout.EndArea();
                EditorGUILayout.Separator();
                artList.elementHeight = 1200;// 190 + element.beginEffect.Count * 80;
            };
            // 绘制表头
            artList.drawHeaderCallback = (Rect rect) =>
            {
                EditorGUI.LabelField(rect, "SkillArtList");
            };
            // 选择回调
            artList.onSelectCallback = (ReorderableList l) =>
            {
                SelectSkillArt = l.index;
            };
            artList.DoLayoutList();
            EditorGUILayout.EndScrollView();
            EditorGUILayout.EndVertical();
        }
Exemple #8
0
        //绘制特效信息
        public void DrawSkillArtEffect(SkillArt skillart, float width)
        {
            EditorGUILayout.BeginVertical("Box");
            EditorGUILayout.LabelField("Skill ArtEffect: 特效");
            //id
            if (skillart.idString == "")
            {
                skillart.idString = EditorDrawUtility.GetSkillStringById(skillart.id);
            }
            string id = EditorGUILayout.TextField("Id:", skillart.idString);

            if (id != skillart.idString)
            {
                skillart.idString = id;
                skillart.id       = EditorDrawUtility.GetSkillIdByString(id);
            }
            //modelType
            int typeindex    = (int)skillart.modelType;
            int newtypeindex = EditorGUILayout.Popup("ModelTargetType:", typeindex, Enum.GetNames(typeof(ModelTargetType)));

            if (newtypeindex != typeindex)
            {
                skillart.modelType = (ModelTargetType)newtypeindex;
                allFbx             = null;
                LoadFbx();
            }
            int fbxselet = -1;
            // GameObject fbx = AssetUtility.GetFBXWithName(EditorDataContainer.currentskillAssetData.modelName);
            GameObject fbx = EditorDataContainer.currentskillAssetData.skillArt.model;

            if (fbx != null)
            {
                if (fbxNamelist.Contains(fbx.name))
                {
                    fbxselet = fbxNamelist.IndexOf(fbx.name);
                }
            }
            LoadAnimationState(false);
            EditorGUILayout.BeginHorizontal();
            GameObject NewFbx       = (GameObject)EditorGUILayout.ObjectField("Model:", fbx, typeof(GameObject), true);
            int        newselectfbx = EditorGUILayout.Popup(fbxselet, fbxNamelist.ToArray());

            EditorGUILayout.EndHorizontal();
            if (newselectfbx != fbxselet)
            {
                skillart.model               = allFbx[newselectfbx];
                skillart.modelName           = allFbx[newselectfbx].name;
                skillart.animationController = allFbx[newselectfbx].name + "_Anim";
                LoadAnimationState();
                SkillEffectPrefabs = null;
                LoadEffect();
            }
            else
            {
                if (NewFbx == null)
                {
                    skillart.model               = null;
                    skillart.modelName           = "";
                    skillart.animationController = "";
                }
                else if (NewFbx != skillart.model)
                {
                    skillart.model               = NewFbx;
                    skillart.modelName           = NewFbx.name;
                    skillart.animationController = NewFbx.name + "_Anim";
                    LoadAnimationState();
                    SkillEffectPrefabs = null;
                    LoadEffect();
                }
            }
            EditorGUILayout.TextField("animationControllerName:", skillart.animationController);
            RuntimeAnimatorController controller = AssetUtility.GetAnimationCtl(skillart.modelType, skillart.modelName, skillart.animationController);

            if (skillart.animationControllerObj == null && controller != null)
            {
                skillart.animationControllerObj = controller;
            }

            RuntimeAnimatorController newcontroller = (RuntimeAnimatorController)EditorGUILayout.ObjectField("AnimatorController:", skillart.animationControllerObj, typeof(RuntimeAnimatorController), true);

            if (newcontroller != controller)
            {
                skillart.animationController    = newcontroller.name;
                skillart.animationControllerObj = newcontroller;
                LoadAnimationState();
            }

            EditorGUILayout.LabelField("GuideAction 开始动作:");
            skillart.guideFadeTime = EditorGUILayout.FloatField("  guideFadeTime:", skillart.guideFadeTime);
            EditorDrawUtility.DrawActionRect("  guideAction:", skillart.guideAction, out skillart.guideAction, stateNamelist);
            EditorDrawUtility.DrawActionRect("  guidingAction:", skillart.guidingAction, out skillart.guidingAction, stateNamelist);
            EditorDrawUtility.DrawActionRect("  endAction:", skillart.endAction, out skillart.endAction, stateNamelist);


            showBeginEffect = EditorGUILayout.Foldout(showBeginEffect, "beginEffect 起手特效:");
            //EditorGUILayout.LabelField("beginEffect 起手特效:");
            if (showBeginEffect)
            {
                if (skillart.beginEffect != null)
                {
                    EditorDrawUtility.DrawEffectUnitList(skillart.beginEffect, beginScrollPos, out beginScrollPos, width, ref beginEffectList, effectNamelist, SkillEffectPrefabs);
                }
                else
                {
                    if (GUILayout.Button("Add beginEffectList"))
                    {
                        skillart.beginEffect = new List <SkillEffectUnit>();
                    }
                }
            }
            showEndEffect = EditorGUILayout.Foldout(showEndEffect, "endEffect 结束特效:");
            // EditorGUILayout.LabelField("tipEffect 警告特效:");
            if (showEndEffect)
            {
                if (skillart.endEffect != null)
                {
                    EditorDrawUtility.DrawEffectUnitList(skillart.endEffect, endEffectScrollPos, out endEffectScrollPos, width, ref endEffectList, effectNamelist, SkillEffectPrefabs);
                }
                else
                {
                    if (GUILayout.Button("Add endEffectList"))
                    {
                        skillart.endEffect = new List <SkillEffectUnit>();
                    }
                }
            }
            showUnit = EditorGUILayout.Foldout(showUnit, "unitEffect 弹道特效:");
            //EditorGUILayout.LabelField("unitEffect 弹道特效:");
            if (showUnit)
            {
                if (skillart.unitEffect != null)
                {
                    EditorDrawUtility.DrawEffectUnitList(skillart.unitEffect, unitEffectScrollPos, out unitEffectScrollPos, width, ref unitEffectList, effectNamelist, SkillEffectPrefabs);
                }
                else
                {
                    if (GUILayout.Button("Add unitEffectList"))
                    {
                        skillart.unitEffect = new List <SkillEffectUnit>();
                    }
                }
            }

            showTipEffect = EditorGUILayout.Foldout(showTipEffect, "tipEffect 警告特效:");
            // EditorGUILayout.LabelField("tipEffect 警告特效:");
            if (showTipEffect)
            {
                if (skillart.tipEffect != null)
                {
                    EditorDrawUtility.DrawEffectUnitList(skillart.tipEffect, tipEffectScrollPos, out tipEffectScrollPos, width, ref tipEffectList, effectNamelist, SkillEffectPrefabs);
                }
                else
                {
                    if (GUILayout.Button("Add tipEffectList"))
                    {
                        skillart.tipEffect = new List <SkillEffectUnit>();
                    }
                }
            }
            showHitEffect = EditorGUILayout.Foldout(showHitEffect, "hitEffect 击中特效:");
            // EditorGUILayout.LabelField("tipEffect 警告特效:");
            if (showHitEffect)
            {
                if (skillart.hitEffect != null)
                {
                    EditorDrawUtility.DrawEffectUnitList(skillart.hitEffect, hitEffectScrollPos, out hitEffectScrollPos, width, ref hitEffectList, effectNamelist, SkillEffectPrefabs);
                }
                else
                {
                    if (GUILayout.Button("Add hitEffectList"))
                    {
                        skillart.tipEffect = new List <SkillEffectUnit>();
                    }
                }
            }
            showBeginCamera = EditorGUILayout.Foldout(showBeginCamera, "beginCameraAction 开始相机特效:");

            //EditorGUILayout.LabelField("beginCameraAction 开始相机特效:");
            if (showBeginCamera)
            {
                if (skillart.beginCameraAction != null)
                {
                    EditorDrawUtility.DrawCameraActionList(skillart.beginCameraAction, beginCameraScrollPos, out beginCameraScrollPos, width, ref beginCameraList);
                }
                else
                {
                    if (GUILayout.Button("Add beginCameraActionList"))
                    {
                        skillart.beginCameraAction = new List <SkillCameraAction>();
                    }
                }
            }
            showMoveCamera = EditorGUILayout.Foldout(showMoveCamera, "moveCameraAction 移动相机特效:");
            if (showMoveCamera)
            {
                //EditorGUILayout.LabelField("moveCameraAction 移动相机特效:");
                if (skillart.moveCameraAction != null)
                {
                    EditorDrawUtility.DrawCameraActionList(skillart.moveCameraAction, movingCameraScrollPos, out movingCameraScrollPos, width, ref movingCameraList);
                }
                else
                {
                    if (GUILayout.Button("Add moveCameraActionList"))
                    {
                        skillart.moveCameraAction = new List <SkillCameraAction>();
                    }
                }
            }
            showHitCamera = EditorGUILayout.Foldout(showHitCamera, "hitCameraAction 命中相机特效:");
            if (showHitCamera)
            {
                // EditorGUILayout.LabelField("hitCameraAction 命中相机特效:");
                if (skillart.hitCameraAction != null)
                {
                    EditorDrawUtility.DrawCameraActionList(skillart.hitCameraAction, hitCameraScrollPos, out hitCameraScrollPos, width, ref hitCameraList);
                }
                else
                {
                    if (GUILayout.Button("Add hitCameraActionList"))
                    {
                        skillart.hitCameraAction = new List <SkillCameraAction>();
                    }
                }
            }
            EditorGUILayout.EndVertical();
        }