public override void OnInspectorGUI() { EditorGUILayout.BeginVertical(GUILayout.ExpandWidth(true), GUILayout.ExpandHeight(true)); { base.OnInspectorGUI(); EditorGUILayout.Space(); EditorGUILayout.Space(); if (GUILayout.Button("Execute", GUILayout.Height(40))) { AssetAddressUtil.UpdateConfigByGroup(target as AssetAddressGroup); EditorUtility.DisplayDialog("Finished", "Finished", "OK"); } if (GUILayout.Button("Filter", GUILayout.Height(40))) { List <string> files = new List <string>(); AssetAddressGroup group = target as AssetAddressGroup; foreach (var filter in group.filters) { files.AddRange(filter.Filter()); } listViewer = new EGUIListView <string>(); listViewer.Header = "Asset List"; listViewer.OnDrawItem = (rect, index) => { Rect indexRect = new Rect(rect.x, rect.y, 20, rect.height); EditorGUI.PrefixLabel(indexRect, new GUIContent("" + index)); Rect itemRect = new Rect(rect.x + indexRect.width, rect.y, rect.width - indexRect.width, rect.height); EditorGUI.LabelField(itemRect, listViewer.GetItem(index)); }; listViewer.AddItems(files.ToArray()); } EGUILayout.DrawHorizontalLine(); if (listViewer != null) { Rect lastRect = EditorGUILayout.GetControlRect(false, 300, GUILayout.ExpandWidth(true), GUILayout.ExpandHeight(true)); if (Event.current.type == EventType.Repaint) { listViewer.OnGUI(lastRect); } } } EditorGUILayout.EndVertical(); }
public static void UpdateConfigByGroup(AssetAddressGroup group) { if (!group.isMain || !group.isEnable) { return; } AssetAddressConfig config = GetOrCreateConfig(); Dictionary <string, AssetAddressData> dataDic = new Dictionary <string, AssetAddressData>(); foreach (var d in config.addressDatas) { dataDic.Add(d.assetPath, d); } foreach (var filter in group.filters) { string[] assetPaths = filter.Filter(); if (assetPaths != null && assetPaths.Length > 0) { foreach (var assetPath in assetPaths) { if (!dataDic.TryGetValue(assetPath, out AssetAddressData addressData)) { addressData = group.operation.GetAddressData(assetPath); dataDic.Add(assetPath, addressData); } else { group.operation.UpdateAddressData(addressData); } addressData.isPreload = group.isPreload; addressData.isNeverDestroy = group.isNeverDestroy; } } } config.addressDatas = dataDic.Values.ToArray(); config.Reload(); EditorUtility.SetDirty(config); }