private bool CheckComponentEventSelectable(Enum arg) { if (selectComponentData == null) { return(false); } EUIEventType eventType = (EUIEventType)arg; if (selectComponentData.SelectType >= EUIComponentType.GameObject && selectComponentData.SelectType < EUIComponentType.Button) { if (eventType >= EUIEventType.PointerEnter && eventType <= EUIEventType.Deselect) { return(true); } } else if (selectComponentData.SelectType.Equals(EUIComponentType.Button)) { if (eventType == EUIEventType.Click) { return(true); } } else if (selectComponentData.SelectType.Equals(EUIComponentType.InputField)) { if (eventType == EUIEventType.ValueChanged || eventType == EUIEventType.EndEdit) { return(true); } } else { if (eventType == EUIEventType.ValueChanged) { return(true); } } return(false); }
private string DefaultEventHandlerName(string componentName, EUIEventType eventType) { return(string.Concat("on", eventType.ToString(), "_", componentName)); }
private void ComponentView() { EditorGUILayout.BeginVertical(); EditorGUILayout.BeginHorizontal(); EditorGUIUtility.labelWidth = 80f; selectComponentData.IsSelect = EditorGUILayout.Toggle("生成Lua成员", selectComponentData.IsSelect, GUILayout.MaxWidth(120)); EditorGUIUtility.labelWidth = 0f; EditorGUILayout.LabelField("路径:" + selectComponentData.ComponentPath, GUILayout.MaxWidth(300)); EditorGUIUtility.labelWidth = 60f; selectComponentData.SelectType = (EUIComponentType)EditorGUILayout.EnumPopup("组件类型", selectComponentData.SelectType, GUILayout.MaxWidth(160)); EditorGUIUtility.labelWidth = 0f; if (selectComponentData.SelectType != lastSelectComponentType) { ResetSelectComponentEvent(); lastSelectComponentType = selectComponentData.SelectType; } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginVertical("box", GUILayout.Width(600), GUILayout.Height(320)); removeEventIndex = -1; for (int i = 0; i < selectComponentData.EventDatas.Count; i++) { EditorGUILayout.BeginHorizontal(); //selectComponentData.SelectEvents[i] = (EUIEventType)EditorGUILayout.EnumPopup(eventLabelContent, selectComponentData.SelectEvents[i], CheckComponentEventSelectable, false, GUILayout.MaxWidth(200)); EUIEventType lastEventType = selectComponentData.EventDatas[i].EventType; EditorGUIUtility.labelWidth = 60f; selectComponentData.EventDatas[i].EventType = (EUIEventType)EditorGUILayout.EnumPopup(eventLabelContent, selectComponentData.EventDatas[i].EventType, CheckComponentEventSelectable, false, GUILayout.MaxWidth(200)); if (lastEventType != selectComponentData.EventDatas[i].EventType) { selectComponentData.EventDatas[i].EventHandlerName = DefaultEventHandlerName(selectComponentData.ComponentName, selectComponentData.EventDatas[i].EventType); } EditorGUIUtility.labelWidth = 80f; selectComponentData.EventDatas[i].EventHandlerName = EditorGUILayout.TextField("事件处理方法", selectComponentData.EventDatas[i].EventHandlerName, GUILayout.MaxWidth(300)); EditorGUIUtility.labelWidth = 0f; if (GUILayout.Button("移除", GUILayout.Width(60))) { removeEventIndex = i; } EditorGUILayout.EndHorizontal(); } if (removeEventIndex != -1) { selectComponentData.EventDatas.RemoveAt(removeEventIndex); } EditorGUILayout.EndVertical(); if (GUILayout.Button("添加事件", GUILayout.Width(120))) { if (selectComponentData.SelectType >= EUIComponentType.GameObject && selectComponentData.SelectType < EUIComponentType.Button) { UIComponentEventAssetData newEvent = new UIComponentEventAssetData(); newEvent.EventType = EUIEventType.PointerClick; newEvent.EventHandlerName = DefaultEventHandlerName(selectComponentData.ComponentName, newEvent.EventType); selectComponentData.EventDatas.Add(newEvent); } else if (selectComponentData.SelectType == EUIComponentType.Button) { UIComponentEventAssetData newEvent = new UIComponentEventAssetData(); newEvent.EventType = EUIEventType.Click; newEvent.EventHandlerName = DefaultEventHandlerName(selectComponentData.ComponentName, newEvent.EventType); selectComponentData.EventDatas.Add(newEvent); selectComponentData.IsSelect = true; } else { UIComponentEventAssetData newEvent = new UIComponentEventAssetData(); newEvent.EventType = EUIEventType.ValueChanged; newEvent.EventHandlerName = DefaultEventHandlerName(selectComponentData.ComponentName, newEvent.EventType); selectComponentData.EventDatas.Add(newEvent); selectComponentData.IsSelect = true; } } EditorGUILayout.EndVertical(); }