コード例 #1
0
        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();
        }
コード例 #2
0
        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);
        }