Example #1
0
        public void DrawUI()
        {
            EditorGUILayout.BeginVertical(GUILayout.Width(WIDTH));
            GUILayout.Space(layer * 10);
            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.BeginVertical(GUILayout.Width(WIDTH));
            key = GetKey();
            GUILayout.Box(eventType + ":layer= " + layer + ",key= " + key, GUILayout.ExpandWidth(true));
            eventType  = (SKILL_EVENT_TYPE)EditorGUILayout.EnumPopup("类型", eventType);
            time       = EditorGUILayout.FloatField("触发时间", time);
            times      = EditorGUILayout.IntField("执行次数", times);
            interval   = EditorGUILayout.FloatField("执行间隔", interval);
            actionTime = EditorGUILayout.FloatField("动作时间", actionTime);
            DrawTypeUI();
            EditorGUILayout.EndVertical();
            EditorGUILayout.BeginVertical(GUILayout.MaxWidth(WIDTH_LEVEL));
            if (GUILayout.Button("X"))
            {
                DeleteEvent();
            }
            if (GUILayout.Button("+"))
            {
                AddChildEvent();
            }
            if (GUILayout.Button("←"))
            {
                LayerLeftEvent();
            }
            if (GUILayout.Button("→"))
            {
                LayerRightEvent();
            }
            if (GUILayout.Button("↑"))
            {
                LayerUpEvent();
            }
            if (GUILayout.Button("↓"))
            {
                LayerDownEvent();
            }
            if (GUILayout.Button("C"))
            {
                CopyEvent();
            }
            EditorGUILayout.EndVertical();

            for (int i = 0; i < childrenEvents.Count; ++i)
            {
                childrenEvents[i].DrawUI();
            }

            EditorGUILayout.EndHorizontal();

            EditorGUILayout.EndVertical();

            RefreshType();
        }
Example #2
0
        public static BaseSkillEvent InstSkillEvent(BinaryReader br, SkillInfo info, BaseSkillEvent parent, int layer, int index)
        {
            SKILL_EVENT_TYPE eventType = (SKILL_EVENT_TYPE)br.ReadInt32();
            BaseSkillEvent   bse       = SkillUtils.InstanceEvent(eventType, info, parent, layer, index);

            bse.time       = br.ReadSingle();
            bse.times      = br.ReadInt32();
            bse.interval   = br.ReadSingle();
            bse.actionTime = br.ReadSingle();
            bse.key        = bse.GetKey();
#if UNITY_EDITOR
            bse.lastType = eventType;
#endif
            return(bse);
        }
Example #3
0
 private void RefreshType()
 {
     if (lastType != eventType)
     {
         lastType = eventType;
         int            index = GetParentChildrenEventList().IndexOf(this);
         BaseSkillEvent nbe   = SkillUtils.InstanceEvent(eventType, skillInfo, parent, layer, index);
         for (int i = 0; i < this.childrenEvents.Count; ++i)
         {
             this.childrenEvents[i].parent = nbe;
             nbe.childrenEvents.Add(this.childrenEvents[i]);
         }
         DeleteEvent();
     }
 }
Example #4
0
        public static BaseSkillEvent InstanceEvent(SKILL_EVENT_TYPE eventType, SkillInfo info, BaseSkillEvent parent, int layer, int index)
        {
            BaseSkillEvent bse = null;

            switch (eventType)
            {
            case SKILL_EVENT_TYPE.动作:
                bse = new SkillEventAction();
                break;

            case SKILL_EVENT_TYPE.子弹:
                bse = new SkillEventBullet();
                break;
            }
            bse.skillInfo = info;
            bse.parent    = parent;
            bse.eventType = eventType;
            bse.layer     = layer;
            bse.GetParentChildrenEventList().Insert(index, bse);
#if UNITY_EDITOR
            bse.lastType = eventType;
#endif
            return(bse);
        }