unity Editor 下批量导出Perfab ,更改模型shader,添加删除组件

来源:互联网 发布:中老年春秋女上衣淘宝 编辑:程序博客网 时间:2024/06/08 06:40

using UnityEngine;
using System.Collections;
using UnityEditor;

public class PrefabChange : Editor {

[MenuItem("Tools/BatchPrefab All Children")] static void BatchPrefab(){    Transform tParent = ((GameObject)Selection.activeObject).transform;    Object tempPrefab;    AddMeshCollider (tParent);    foreach(Transform t in tParent){        tempPrefab = EditorUtility.CreateEmptyPrefab("Assets/Prefab/" + t.name +".prefab");        tempPrefab = EditorUtility.ReplacePrefab(t.gameObject, tempPrefab);    }    ChangeShader (tParent);    MoveMeshCollider( tParent);}//改变材质的shaderstatic void ChangeShader(Transform tParent){    foreach(Transform t in tParent){        Material[] temp =t.GetComponent<Renderer>().sharedMaterials;        foreach (var item in temp) {            if (item.name.Contains("toutie")) {                item.shader=Shader.Find("Legacy Shaders/Transparent/Specular");            }        }        if (t.childCount>0) {            ChangeShader(t);        }    }}//给模型添加Meshcolliderstatic void AddMeshCollider(Transform tParent){    foreach (Transform t in tParent) {        t.gameObject.AddComponent<MeshCollider>();        if (t.childCount>0) {            AddMeshCollider(t);        }    }}//给模型删除Meshcolliderstatic void MoveMeshCollider(Transform tParent){    foreach (Transform t in tParent) {        if (t.GetComponent<MeshCollider>()) {            DestroyImmediate(t.GetComponent<MeshCollider>());        }        if (t.childCount>0) {            MoveMeshCollider(t);        }    }}

}

原创粉丝点击