42 lines
901 B
C#
42 lines
901 B
C#
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
using System;
|
|
|
|
public class ShaderResetter : MonoBehaviour {
|
|
|
|
[SerializableAttribute]
|
|
public struct ResetTarget{
|
|
public string shaderName;
|
|
public Renderer[] renderers;
|
|
public Image[] images;
|
|
}
|
|
[SerializeField]
|
|
private ResetTarget[] resetTargets = default;
|
|
[HideInInspector, SerializeField]
|
|
private bool reseted = false;
|
|
|
|
void Awake(){
|
|
if(!reseted){
|
|
Reset();
|
|
}
|
|
Destroy(this);
|
|
}
|
|
|
|
public void Reset(){
|
|
foreach(ResetTarget target in resetTargets){
|
|
Shader shader = Shader.Find(target.shaderName);
|
|
if(shader != null){
|
|
foreach(Renderer renderer in target.renderers){
|
|
renderer.sharedMaterial.shader = shader;
|
|
}
|
|
foreach(Image image in target.images){
|
|
image.material.shader = shader;
|
|
}
|
|
}else{
|
|
Debug.LogWarning(target.shaderName + " not exists shader.");
|
|
}
|
|
}
|
|
reseted = true;
|
|
}
|
|
}
|