LittleTool之批量修改材质

using UnityEngine;
using System.Collections;
using UnityEditor;

public class ChangeMaterial : EditorWindow
{        static string path = "Assets/_Materials/";
        static string shaderName="Custom/CurvedWorld";
        
        static string tempName1="_Curvature";//材质球参数,需要手动修改
        static string tempName2="_Axis";
        static float temp1=1;
        static float temp2=1;

        public static  string  [] postfix =
        {
                ".png",".jpg",".tga","psd"
        };

        [MenuItem ("Custom/ChangeMaterial")]     
        public static void Change()
        {
                if (Selection.activeGameObject != null) {

                        foreach (GameObject go in Selection.gameObjects) {
                                Renderer render = go.GetComponentInChildren<Renderer> ();
                                if (render != null) {                                      
                                        
                                        Texture texture = GetTexture (go.name);//根据对象名获取图片
                                        if (texture != null) {
                                                Material newMat = new Material (Shader.Find(shaderName));

                                                newMat.SetFloat(tempName1,temp1);
                                                newMat.SetFloat (tempName2,temp2);

                                                AssetDatabase.CreateAsset (newMat, path + go.name+".mat");
                                                render.sharedMaterial=newMat;
                                                render.sharedMaterial.mainTexture = texture;
                                                Debug.Log ("成功!");
                                        } else {
                                                Debug.Log ("失败!");
                                        }
                                }
                        }
                }
        } 
        static Texture GetTexture(string name)
        {
                foreach(string str in postfix)
                {
                        Texture texture = AssetDatabase.LoadAssetAtPath("Assets/_Textures/" + name+str,typeof(Texture)) as Texture;
                        if(texture != null)
                                return texture;
                }
                return null;                                            
        }
}

注意:

  1.将要用到的模型都制作为预制体!!!

  2.手动修改参数

  

转载于:https://www.cnblogs.com/chimo523/p/5201489.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值