Advertisement
Guest User

Untitled

a guest
Sep 27th, 2016
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.17 KB | None | 0 0
  1. using UnityEngine;
  2. using System.Collections;
  3.  
  4. public class ReInitShaderFromEditor : MonoBehaviour {
  5.  
  6.     public Renderer[] renderers;
  7.     public Material[] materials;
  8.     public string[] shaders;
  9.  
  10.     private static ReInitShaderFromEditor _instance;
  11.     public static ReInitShaderFromEditor Instance
  12.     {
  13.         get
  14.         {
  15.             if (_instance == null)
  16.                 _instance = FindObjectOfType<ReInitShaderFromEditor> ();
  17.  
  18.             if (_instance == null)
  19.                 _instance = new GameObject ("_ReInitShaderFromEditor").AddComponent<ReInitShaderFromEditor> ();
  20.            
  21.             return _instance;
  22.         }
  23.     }
  24.  
  25.     void Awake()
  26.     {
  27.         if (_instance != null && _instance != this){
  28.             Destroy (this.gameObject);
  29.             return;
  30.         } else if(_instance == null)
  31.             _instance = this;
  32.  
  33.     }
  34.  
  35.     public  void ReInit (Transform tr)
  36.     {
  37.         renderers = tr.GetComponentsInChildren<Renderer>(true);
  38.  
  39.         foreach(var rend in renderers)
  40.         {
  41.             materials = rend.sharedMaterials;
  42.             shaders =  new string[materials.Length];
  43.  
  44.             for( int i = 0; i < materials.Length; i++)
  45.             {
  46.                 shaders[i] = materials[i].shader.name;
  47.             }        
  48.  
  49.             for( int i = 0; i < materials.Length; i++)
  50.             {
  51.                 materials[i].shader = Shader.Find(shaders[i]);
  52.             }
  53.         }
  54.     }
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement