protected Dictionary <string, List <PluginImporter> > GetCompatiblePlugins(string buildTargetName, string[] defines) { var pluginImporters = PluginImporter.GetImporters(buildTargetName); var plugins = pluginImporters .Where(pluginImporter => IsPluginDefinesCompatible(pluginImporter, buildTargetName, defines)); plugins = PluginImporter.FilterAssembliesByAssemblyVersion(plugins); var matchingPlugins = new Dictionary <string, List <PluginImporter> >(); foreach (var plugin in plugins) { string finalPluginPath = CalculateFinalPluginPath(buildTargetName, plugin); if (string.IsNullOrEmpty(finalPluginPath)) { continue; } if (!matchingPlugins.TryGetValue(finalPluginPath, out var pluginsList)) { pluginsList = new List <PluginImporter>(); matchingPlugins[finalPluginPath] = pluginsList; } pluginsList.Add(plugin); } return(matchingPlugins); }