protected override void OnGUI(Rect rect) { FrameConfig configs = win.currentFrame; if (null == configs) { return; } bool lastStay = configs.stayBodyRange; GUILayout.BeginVertical(AEStyles.box); bool nextStay = EditorGUILayoutEx.DrawObject("保持上一帧", lastStay); GUILayout.EndVertical(); if (nextStay) { if (!lastStay) { configs.bodyRanges.Clear(); win.bodyRangeSelectIndex = -1; } } else { if (lastStay) {//从保持到非保持,则拷贝保持的范围到当前 win.CopyBodyRangeToCurrentFrameIfStay(); } win.bodyRangeSelectIndex = EditorGUILayoutEx.DrawList(configs.bodyRanges, win.bodyRangeSelectIndex, ref scrollPos, NewRange, ActionEditorUtility.RangeConfigDrawer); } configs.stayBodyRange = nextStay;//处理完之后再设置,否者CopyBodyRangeToCurrentFrameIfStay不会执行 }
protected override void OnGUI(Rect rect) { StateConfig config = win.currentState; if (null == config) { return; } scrollView = EditorGUILayout.BeginScrollView(scrollView); EditorGUI.BeginChangeCheck(); config.stateName = EditorGUILayoutEx.DrawObject("状态名", config.stateName); config.dafualtAnimIndex = EditorGUILayoutEx.DrawObject("默认动画序号", config.dafualtAnimIndex); config.animNames = EditorGUILayoutEx.DrawObject("动画名", config.animNames); config.fadeTime = EditorGUILayoutEx.DrawObject("过度时间", config.fadeTime); config.enableLoop = EditorGUILayoutEx.DrawObject("循环", config.enableLoop); if (!config.enableLoop) { config.nextStateName = EditorGUILayoutEx.DrawObject("下一个状态", config.nextStateName); config.nextAnimIndex = EditorGUILayoutEx.DrawObject("下一个状态动画序号", config.nextAnimIndex); } if (EditorGUI.EndChangeCheck()) { win.actionMachineDirty = true; } EditorGUILayout.EndScrollView(); }
private void EditorMode() { Event evt = Event.current; if (GUILayout.Button("保存", GUILayout.Width(80))) { GUI.FocusControl(null); SaveConfig(); } if (GUILayout.Button("保存到", GUILayout.Width(80))) { GUI.FocusControl(null); SaveConfigToSelect(win.config); } if (GUILayout.Button("还原修改", GUILayout.Width(80))) { GUI.FocusControl(null); ResetConfig(); } if (GUILayout.Button("拷贝配置", GUILayout.Width(80))) { GUI.FocusControl(null); CopyConfig(); } if (GUILayout.Button("粘贴配置", GUILayout.Width(80))) { GUI.FocusControl(null); PasteConfig(); } win.setting.showView = EditorGUILayoutEx.DrawObject("显示", win.setting.showView); GUILayout.FlexibleSpace(); EditorGUI.BeginChangeCheck(); win.actionMachineObj = (GameObject)EditorGUILayout.ObjectField(win.actionMachineObj, typeof(GameObject), true); if (EditorGUI.EndChangeCheck() && win.actionMachineObj != null) { if (win.actionMachineObj != null) { win.UpdateTarget(win.actionMachineObj); } } EditorGUI.BeginChangeCheck(); win.configAsset = (TextAsset)EditorGUILayout.ObjectField(win.configAsset, typeof(TextAsset), false); if (EditorGUI.EndChangeCheck()) { if (win.configAsset != null) { win.UpdateConfig(win.configAsset); } } if (GUILayout.Button("创建", GUILayout.Width(80))) { GUI.FocusControl(null); CreateNew(); } }
public void OnGUI(Rect rect) { GUILayout.BeginVertical(AEStyles.box); win.config.firstStateName = EditorGUILayoutEx.DrawObject("起始状态名", win.config.firstStateName); GUILayout.EndVertical(); GUILayout.Space(4); win.stateSelectIndex = EditorGUILayoutEx.DrawList(win.config.states, win.stateSelectIndex, ref scrollPos, NewState, ActionEditorUtility.StateDrawer); }
public static void RangeConfigDrawer(int index, ref bool selected, RangeConfig obj) { if (GUILayout.Button($"{index}", selected ? AEStyles.item_head_select : AEStyles.item_head_normal, GUILayout.ExpandHeight(true), GUILayout.Width(15))) { GUI.FocusControl(null); selected = !selected; } EditorGUILayoutEx.DrawObject(GUIContent.none, obj); }
private void PlayMode() { win.setting.showView = EditorGUILayoutEx.DrawObject("显示", win.setting.showView); GUILayout.FlexibleSpace(); string[] configNames = ActionMachineHelper.loadedConfig.Keys.ToArray(); if (configNames == null || configNames.Length == 0) { selectConfigName = string.Empty; GUILayout.Label("当前没有已加载的配置文件"); return; } bool isInit = true; int index = 0; if (!string.IsNullOrEmpty(selectConfigName)) { index = Array.FindIndex(configNames, t => string.Compare(t, selectConfigName) == 0); if (index < 0) { index = 0; } } else { isInit = false; } GUILayout.Label("已加载配置文件"); EditorGUI.BeginChangeCheck(); index = EditorGUILayout.Popup(GUIContent.none, index, configNames, GUILayout.Width(200f)); if (EditorGUI.EndChangeCheck() || !isInit) { selectConfigName = configNames[index]; MachineConfig config = ActionMachineHelper.loadedConfig[selectConfigName]; win.config = config; } if (GUILayout.Button("覆盖到", GUILayout.Width(80))) { GUI.FocusControl(null); SaveConfigToSelect(win.config); } if (GUILayout.Button("另存到", GUILayout.Width(100))) { GUI.FocusControl(null); CopyToNew(win.config); } }
protected override void OnGUI(Rect rect) { object obj = win.currentGlobalAction; if (null == obj) { return; } scrollView = EditorGUILayout.BeginScrollView(scrollView); EditorGUILayoutEx.DrawObject(GUIContent.none, obj, obj.GetType()); EditorGUILayout.EndScrollView(); }
protected override void OnGUI(Rect rect) { object obj = win.currentAction; if (null == obj) { return; } scrollView = EditorGUILayout.BeginScrollView(scrollView); EditorGUILayoutEx.DrawObject(GUIContent.none, obj, obj.GetType()); EditorGUILayout.EndScrollView(); /* * Type type = obj.GetType(); * FieldInfo[] fieldInfos = type.GetFields(); * foreach (var fieldInfo in fieldInfos) * { * DrawField(obj, fieldInfo); * }*/ }
private void DrawFrameTool() { GUILayout.BeginVertical(); GUILayout.Label("帧操作"); setting.frameCnt = EditorGUILayoutEx.DrawObject("帧数(N)", setting.frameCnt); if (GUILayout.Button("添加 N 帧到末尾")) { GUI.FocusControl(null); AddFrameToEnd(); } if (GUILayout.Button("向前插入 N 帧")) { GUI.FocusControl(null); InsertFrameTo(true); } if (GUILayout.Button("向后插入 N 帧")) { GUI.FocusControl(null); InsertFrameTo(false); } if (GUILayout.Button("删除选择帧")) { GUI.FocusControl(null); if (win.frameSelectIndex < 0) { EditorUtility.DisplayDialog("提示", "请选择一帧", "确定"); return; } if (win.frameSelectIndex >= 0) { win.currentFrames.RemoveAt(win.frameSelectIndex); } } if (GUILayout.Button("从上一帧拷贝")) { CopyPrevFrame(); } GUILayout.BeginHorizontal(); setting.fromIndex = EditorGUILayoutEx.DrawObject("开始", setting.fromIndex); setting.toIndex = EditorGUILayoutEx.DrawObject("结束", setting.toIndex); GUILayout.EndHorizontal(); if (GUILayout.Button("粘贴范围")) { PasteRangeFrame(); } if (GUILayout.Button("删除范围")) { DeleteRangeFrame(); } if (GUILayout.Button("设置使用上一帧范围")) { for (int i = setting.fromIndex; i <= setting.toIndex; i++) { FrameConfig config = win.currentFrames[i]; config.bodyRanges.Clear(); config.stayBodyRange = true; } } GUILayout.Space(4f); GUILayout.Label("操作选项"); win.setting.enableQuickKey = EditorGUILayoutEx.DrawObject("启用快捷键", win.setting.enableQuickKey); setting.copyAttackRanges = EditorGUILayoutEx.DrawObject("拷贝攻击范围", setting.copyAttackRanges); setting.copyBodyRanges = EditorGUILayoutEx.DrawObject("拷贝身体范围", setting.copyBodyRanges); win.setting.frameListViewRectHeight = EditorGUILayoutEx.DrawObject("帧视图高", win.setting.frameListViewRectHeight); win.setting.frameWidth = EditorGUILayoutEx.DrawObject("帧宽", win.setting.frameWidth); GUILayout.EndVertical(); }