纳金网

标题: 批量修改材质+添加贴图 [打印本页]

作者: may    时间: 2015-11-20 03:53
标题: 批量修改材质+添加贴图

因为工作需求,做了个批量修改材质为Reflective+Specular(反射高光)然后批量添加Cubemap这么个需求所以顺便做了个编辑器小工具,其实扩展开了可以作为批量添加修改材质,并且批量添加贴图的,不过这些就由需求去定了。
  1. using UnityEngine;
  2. using System.Collections;
  3. using UnityEditor;
  4. using System.Collections.Generic;
  5. using System.IO;

  6. public class CubeMapAddScript : EditorWindow
  7. {
  8.     /// <summary>
  9.     /// 生成一个EditorWindow工具
  10.     /// </summary>
  11.         [MenuItem("Custom/OperateMaterial")]
  12.     static void Excute()
  13.     {
  14.         EditorWindow myWindow = EditorWindow.GetWindowWithRect<CubeMapAddScript>(new Rect(100, 100, 1000, 1000));
  15.         myWindow.Show();

  16.     }

  17.     private string path;    //本来是打算写贴图所在文件夹路径去按照名字一一对应赋贴图的,后来美术说这个不用就算了。

  18.     private Cubemap optionalCubemap;    //添加的cubemap


  19.     void OnGUI()
  20.     {
  21.         EditorGUILayout.BeginVertical();

  22.         optionalCubemap = EditorGUILayout.ObjectField("CubeMap", optionalCubemap, typeof(Cubemap), false) as Cubemap;   //这里是选择cubemap

  23.         if (GUILayout.Button("修改为反射高光(Reflect+Specular)材质"))
  24.         {
  25.             ChangeMaterial_ReflectSpecular(path, optionalCubemap);  //path参数可以不要,多余了
  26.         }
  27.         EditorGUILayout.EndVertical();
  28.     }

  29.     void ChangeMaterial_ReflectSpecular(string path,Cubemap optionalCubemap)
  30.     {
  31.         path = "Asset" + "/" + path;

  32.         Object[] selectObj = Selection.gameObjects; //获取选中的物体,无论是Hierarchy中还是prefab都可以

  33.         for (int i = 0; i < selectObj.Length; i++)
  34.         {
  35.             GameObject tmp = selectObj[i] as GameObject;
  36.             tmp.GetComponent<Renderer>().sharedMaterial.shader= Shader.Find("Legacy Shaders/Reflective/Specular");  //根据材质名去选择,需要拓展的话可以用个列表存放然后去选择对应材质就行
  37.             tmp.GetComponent<Renderer>().sharedMaterial.SetTexture("_Cube", optionalCubemap);   //这里我只改了cubemap
  38.          }
  39.     }
  40. }
复制代码





欢迎光临 纳金网 (http://go.narkii.com/club/) Powered by Discuz! X2.5