static List <ConstGenSettings.Shader_> RetriveValues() { List <ConstGenSettings.Shader_> shaders_ = new List <ConstGenSettings.Shader_>(); int duplicateCount = 1; // find shaders string[] shadersPath = AssetDatabase.FindAssets("t:shader"); foreach (string path in shadersPath) { // ==================================================================== // get shader and it's path string shaderPath = AssetDatabase.GUIDToAssetPath(path); Shader shader = AssetDatabase.LoadAssetAtPath <Shader>(shaderPath); if (shader == null) { continue; } // ==================================================================== ConstGenSettings.Shader_ shader_ = new ConstGenSettings.Shader_(); List <string> propertyNames = new List <string>(); // remove shader path from shader name int index = shader.name.LastIndexOf('/'); StringBuilder name_ = new StringBuilder(); name_.Append(shader.name.Remove(0, index + 1)); // remove any characters not okay for variable naming shader_.name = generator.MakeIdentifier(name_.ToString()); // ==================================================================== int propertiesCount = ShaderUtil.GetPropertyCount(shader); if (propertiesCount == 0) { continue; } // loop through shader properties and cache it to propertyNames for (int i = 0; i < propertiesCount; i++) { string propertyName = ShaderUtil.GetPropertyName(shader, i); propertyNames.Add(propertyName); } // before adding the new shader to the list check first if it has conflicting names foreach (ConstGenSettings.Shader_ s in shaders_) { if (s.name == shader_.name) { // add duplication identifier shader_.name += "_D" + duplicateCount; duplicateCount++; break; } } // remove any duplicate shader properties and store it in shaderData.properties shader_.properties = propertyNames.Distinct().ToList(); shaders_.Add(shader_); } return(shaders_); }