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);
}
//改变材质的shader
static 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);
}
}
}
//给模型添加Meshcollider
static void AddMeshCollider(Transform tParent){
foreach (Transform t in tParent) {
t.gameObject.AddComponent<MeshCollider>();
if (t.childCount>0) {
AddMeshCollider(t);
}
}
}
//给模型删除Meshcollider
static void MoveMeshCollider(Transform tParent){
foreach (Transform t in tParent) {
if (t.GetComponent<MeshCollider>()) {
DestroyImmediate(t.GetComponent<MeshCollider>());
}
if (t.childCount>0) {
MoveMeshCollider(t);
}
}
}
}