using Gameplay.Fight.FightStory.Data; using Gameplay.Fight.FightStory.WrapData; using UnityEditor; namespace CEditor.FightStory.Handle { public static class ActionDataHandle { public static void HandleActionData(FightStoryActionData actionData) { actionData.triggerTime = EditorGUILayout.FloatField("触发时间:", actionData.triggerTime); _ShowActionType(actionData); switch (actionData.actionType) { case EFightStoryActionType.None: EditorGUILayout.HelpBox("请选择action类型", MessageType.Error); break; case EFightStoryActionType.Talk: _ShowActionTalk(actionData); break; case EFightStoryActionType.PlayEffect: _ShowActionPlayEffect(actionData); break; case EFightStoryActionType.End: _ShowActionEnd(actionData); break; case EFightStoryActionType.SetUnitPos: _ShowSetUnitPos(actionData); break; case EFightStoryActionType.SetCameraPos: _ShowSetCameraPos(actionData); break; case EFightStoryActionType.PlayAnim: _ShowPlayAnim(actionData); break; case EFightStoryActionType.GlobalFade: _ShowGlobalAction(actionData); break; case EFightStoryActionType.ActiveObj: _ShowActiveObj(actionData); break; default: EditorGUILayout.HelpBox("未知的action类型:" + actionData.actionType, MessageType.Error); break; } } private static void _ShowActiveObj(FightStoryActionData actionData) { var activeObjData = new ActionWrapDataActiveObj(actionData); activeObjData.controlObjPath = EditorGUILayout.TextField("控制对象路径:", activeObjData.controlObjPath); activeObjData.controlType = EditorGUILayout.IntPopup("控制类型:", activeObjData.controlType, EFightStoryActiveType.Names, EFightStoryActiveType.Values); } private static void _ShowGlobalAction(FightStoryActionData actionData) { var globalFadeData = new ActionWrapDataGlobalFade(actionData); globalFadeData.fadeType = EditorGUILayout.IntPopup("渐变类型:", globalFadeData.fadeType, EFightStoryGlobalFadeType.Names, EFightStoryGlobalFadeType.Values); globalFadeData.fadeTime = EditorGUILayout.FloatField("渐变时间:", globalFadeData.fadeTime); } private static void _ShowPlayAnim(FightStoryActionData actionData) { var playAnimData = new ActionWrapDataPlayAnim(actionData); playAnimData.unitLocalId = EditorGUILayout.IntField("单位ID:", playAnimData.unitLocalId); playAnimData.animName = EditorGUILayout.TextField("动画名称:", playAnimData.animName); } private static void _ShowSetCameraPos(FightStoryActionData actionData) { var setCameraPosData = new ActionWrapDataSetCameraPos(actionData); setCameraPosData.moveType = EditorGUILayout.IntPopup("移动类型:", setCameraPosData.moveType, EFightStoryPosMoveType.Names, EFightStoryPosMoveType.Values); setCameraPosData.targetPos = EditorGUILayout.Vector3Field("目标位置:", setCameraPosData.targetPos); switch (setCameraPosData.moveType) { case EFightStoryPosMoveType.SetPos: // nothing break; case EFightStoryPosMoveType.LineMove: setCameraPosData.moveSpeed = EditorGUILayout.FloatField("移动速度:", setCameraPosData.moveSpeed); break; default: EditorGUILayout.HelpBox("未知的移动类型:" + setCameraPosData.moveType, MessageType.Error); break; } } private static void _ShowSetUnitPos(FightStoryActionData actionData) { var setUnitPosData = new ActionWrapDataSetUnitPos(actionData); setUnitPosData.unitLocalId = EditorGUILayout.IntField("单位ID:", setUnitPosData.unitLocalId); setUnitPosData.targetCellIndex = EditorGUILayout.IntField("目标格子索引:", setUnitPosData.targetCellIndex); setUnitPosData.moveType = EditorGUILayout.IntPopup("移动类型:", setUnitPosData.moveType, EFightStoryPosMoveType.Names, EFightStoryPosMoveType.Values); switch (setUnitPosData.moveType) { case EFightStoryPosMoveType.SetPos: setUnitPosData.targetYaw = EditorGUILayout.IntField("Y轴角度:", setUnitPosData.targetYaw); break; case EFightStoryPosMoveType.LineMove: setUnitPosData.moveSpeed = EditorGUILayout.FloatField("移动速度:", setUnitPosData.moveSpeed); break; default: EditorGUILayout.HelpBox("未知的移动类型:" + setUnitPosData.moveType, MessageType.Error); break; } } private static void _ShowActionType(FightStoryActionData actionData) { actionData.actionType = EditorGUILayout.IntPopup("Action类型:", actionData.actionType, EFightStoryActionType.Names, EFightStoryActionType.Values); } private static void _ShowActionEnd(FightStoryActionData actionData) { EditorGUILayout.HelpBox("结束剧情", MessageType.Info); } private static void _ShowActionPlayEffect(FightStoryActionData actionData) { var playEffectData = new ActionWrapDataPlayEffect(actionData); playEffectData.effectId = EditorGUILayout.IntField("特效ID:", playEffectData.effectId); playEffectData.effectPosType = EditorGUILayout.IntPopup("特效位置类型:", playEffectData.effectPosType, EFightStoryPlayEffectPosType.Names, EFightStoryPlayEffectPosType.Values); switch (playEffectData.effectPosType) { case EFightStoryPlayEffectPosType.Character: playEffectData.targetUnitLocalId = EditorGUILayout.IntField("角色ID:", playEffectData.targetUnitLocalId); break; case EFightStoryPlayEffectPosType.CellIndex: playEffectData.targetCellIndex = EditorGUILayout.IntField("格子位置:", playEffectData.targetCellIndex); break; default: EditorGUILayout.HelpBox("未知的特效位置类型:" + playEffectData.effectPosType, MessageType.Error); break; } } private static void _ShowActionTalk(FightStoryActionData actionData) { // 对话类型, 0 旁白, 1 角色说话 var talkData = new ActionWrapDataTalk(actionData); talkData.talkType = EditorGUILayout.IntPopup("对话类型:", talkData.talkType, EFightStoryTalkType.Names, EFightStoryTalkType.Values); // 对话内容 talkData.talkContent = EditorGUILayout.TextField("对话内容:(多语言key)", talkData.talkContent); if (talkData.talkType == EFightStoryTalkType.CharacterTalk) { // 说话时的立绘 talkData.talkImgUrl = EditorGUILayout.TextField("立绘图片:(图片路径)", talkData.talkImgUrl); if (!string.IsNullOrEmpty(talkData.talkImgUrl)) { talkData.talkImgPos = EditorGUILayout.IntPopup("立绘位置类型:", talkData.talkImgPos, EFightStoryTalkImgPosType.Names, EFightStoryTalkImgPosType.Values); } talkData.talkUnitId = EditorGUILayout.IntField("角色LocalID:", talkData.talkUnitId); talkData.talkName = EditorGUILayout.TextField("角色名字:(多语言key)", talkData.talkName); } } } }