private void PlayAction(bool high) { for (int i = 0; i < Action_.ActionEvents.Length; i++) { Action.ActionEvent ae = Action_.ActionEvents[i]; if (ae.EventType == ActionEventType.ANIMATION && ae.RigorTime == 0) { EditorUtility.DisplayDialog("错误", "请填写动作不可打断时间", "OK"); return; } } if (!EditorApplication.isPlaying) { EditorUtility.DisplayDialog("Error", "需要在运行状态下才能进行该操作", "OK"); return; } if (!ModelLoader.self) { return; } ModelLoader.self.ResetTime(); ModelLoader.self.transform.position = Vector3.zero; SkillContext context = new SkillContext(); context.Wave = 1; for (int i = 0; i < 10; i++) { SkillContext.FireBoll fireBoll = new SkillContext.FireBoll(); fireBoll.limit = 3; if (ModelLoader.targetList.Count > 0) { fireBoll.ro = ModelLoader.targetList[Random.Range(0, ModelLoader.targetList.Count - 1)]; } context.targets.Add(fireBoll); } bool hasbuff = false; for (int i = 0; i < Action_.ActionEvents.Length; i++) { Action.ActionEvent ae = Action_.ActionEvents[i]; if (ae.EventPart == EventPart.BUFF) { hasbuff = true; break; } } if (hasbuff) { ModelLoader.self.mActionPerformer.StartAction(Action_, EventPart.BUFF, high, null); ModelLoader.self.mActionPerformer.StartCoroutine(PlayAction(context, 2, high)); } else { ModelLoader.self.mActionPerformer.StartCoroutine(PlayAction(context, 0, high)); } }
public override void OnInspectorGUI() { base.OnInspectorGUI(); this.serializedObject.Update(); for (int i = 0; i < Action_.ActionEvents.Length; i++) { Action.ActionEvent ae = Action_.ActionEvents[i]; if (string.IsNullOrEmpty(ae.ActionEventName)) { if (ae.EventType == ActionEventType.ANIMATION) { ae.ActionEventName = ae.State.ToString(); } else if (!string.IsNullOrEmpty(ae.SourcePath)) { ae.ActionEventName = Path.GetFileName(ae.SourcePath); } else if (!string.IsNullOrEmpty(ae.AudioPath)) { ae.ActionEventName = Path.GetFileName(ae.AudioPath); } else { ae.ActionEventName = ae.EventType.ToString().ToLower(); } } } #region PlayAction if (GUILayout.Button("PlayAction")) { PlayAction(true); } if (GUILayout.Button("PlayLowAction")) { PlayAction(false); } #endregion }
public void Initialize(RoleObject parent) { for (int i = 0; i < config.ActionEvents.Length; ++i) { Action.ActionEvent actionevent = config.ActionEvents[i]; if (actionevent.EventPart != eventpart) { continue; } List <ZWActionEvent> eventlist = null; float time = 0; float Duration = 0; int fireballNum = 0; switch (actionevent.EventType) { case ActionEventType.ANIMATION: eventlist = ZWActionEvent.CreateEffect <ActionEventPlayAnimation>(parent, this, actionevent, out Duration); break; case ActionEventType.EFFECT: eventlist = ZWActionEvent.CreateEffect <ActionEventStartEffectOnSelf>(parent, this, actionevent, out Duration); break; case ActionEventType.FIREBALL: eventlist = ZWActionEvent.CreateEffect <ActionEventStartEffectFireBall>(parent, this, actionevent, out Duration, this.context, fireballNum); fireballNum++; break; case ActionEventType.AUDIO: eventlist = ZWActionEvent.CreateEffect <ActionEventPlaySound>(parent, this, actionevent, out Duration); break; case ActionEventType.CAMERA_SHACK: eventlist = ZWActionEvent.CreateEffect <ActionEventCameraShakeEffect>(parent, this, actionevent, out Duration); break; case ActionEventType.SCREEN_BLACK: eventlist = ZWActionEvent.CreateEffect <ActionEventScreenEffect>(parent, this, actionevent, out Duration); break; case ActionEventType.RADIALBLUR: eventlist = ZWActionEvent.CreateEffect <ActionEventRadialBlur>(parent, this, actionevent, out Duration); break; case ActionEventType.DEAD: eventlist = ZWActionEvent.CreateEffect <ActionEventDead>(parent, this, actionevent, out Duration); break; case ActionEventType.SLOW: eventlist = ZWActionEvent.CreateEffect <ActionEventSlow>(parent, this, actionevent, out Duration); break; case ActionEventType.HEATDISTORT: eventlist = ZWActionEvent.CreateEffect <ActionEventStartEffectOnSelf>(parent, this, actionevent, out Duration); break; case ActionEventType.HIDING: eventlist = ZWActionEvent.CreateEffect <ActionEventHiding>(parent, this, actionevent, out Duration); break; case ActionEventType.TRANSFORM: eventlist = ZWActionEvent.CreateEffect <ActionEventTransform>(parent, this, actionevent, out Duration); break; case ActionEventType.XPBODYCHANGE: eventlist = ZWActionEvent.CreateEffect <ActionEventXPBodyChange>(parent, this, actionevent, out Duration); break; } time = Mathf.Max(Duration, time); for (int j = 0; j < eventlist.Count; j++) { this.actionEvents.AddTail(eventlist[j]); } this.LifeTime += time; } }