SpriteStudioForUnity.SpriteStudioBaker.CreateMaterials C# (CSharp) Method

CreateMaterials() public method

public CreateMaterials ( SpriteStudioCellMap cellMap ) : void
cellMap SpriteStudioCellMap
return void
        public void CreateMaterials(SpriteStudioCellMap cellMap)
        {
            string destFileName = texturesDirectory + "/" + cellMap.imagePath;
            string fileName = Path.GetFileNameWithoutExtension (cellMap.imagePath);
            Texture2D texture = AssetDatabase.LoadAssetAtPath (destFileName, typeof(Texture2D)) as Texture2D;

            Material addMaterial = new Material (Shader.Find ("Custom/SpriteStudio5/Add"));
            addMaterial.mainTexture = texture;
            AssetDatabase.CreateAsset (addMaterial, materialsDirectory + "/" + fileName + "_Add.mat");
            addMaterialDict [cellMap.name] = addMaterial;

            Material mixMaterial = new Material (Shader.Find ("Custom/SpriteStudio5/Mix"));
            mixMaterial.mainTexture = texture;
            AssetDatabase.CreateAsset (mixMaterial, materialsDirectory + "/" + fileName + "_Mix.mat");
            mixMaterialDict [cellMap.name] = mixMaterial;

            Material mulMaterial = new Material (Shader.Find ("Custom/SpriteStudio5/Mul"));
            mulMaterial.mainTexture = texture;
            AssetDatabase.CreateAsset (mulMaterial, materialsDirectory + "/" + fileName + "_Mul.mat");
            mulMaterialDict [cellMap.name] = mulMaterial;

            Material subMaterial = new Material (Shader.Find ("Custom/SpriteStudio5/Sub"));
            subMaterial.mainTexture = texture;
            AssetDatabase.CreateAsset (subMaterial, materialsDirectory + "/" + fileName + "_Sub.mat");
            subMaterialDict [cellMap.name] = subMaterial;

            AssetDatabase.SaveAssets ();
            AssetDatabase.Refresh ();
        }

Usage Example

        bool CreateMaterials(SpriteStudioBaker baker)
        {
            baker.addMaterialDict = new Dictionary<string, Material>();
            baker.mixMaterialDict = new Dictionary<string, Material>();
            baker.mulMaterialDict = new Dictionary<string, Material>();
            baker.subMaterialDict = new Dictionary<string, Material>();

            if (baker.cellMapList == null)
                return true;

            string message = null;
            try
            {
                for (int i = 0; i < baker.cellMapList.Count; i++)
                {
                    SpriteStudioCellMap cellMap = baker.cellMapList [i];
                    message = cellMap.imagePath;
                    EditorUtility.DisplayProgressBar("Sprite Studio For Unity", "Create Material(" + (i + 1) + "/" + baker.cellMapList.Count + ") : " + cellMap.name, 0.6f);
                    baker.CreateMaterials(cellMap);
                }
            } catch (Exception e)
            {
                EditorUtility.DisplayDialog("Error", "Create Material : " + message, "OK");
                Debug.Log(e.StackTrace);
                return false;
            }
            return true;
        }