12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- public class FixShader : MonoBehaviour
- {
- private List<Material> thisMaterial = new List<Material>();
- private List<string> shaders = new List<string>();
- private void Awake()
- {
- thisMaterial.Clear();
- shaders.Clear();
- MeshRenderer[] meshRenderer = GetComponentsInChildren<MeshRenderer>(true);
- int length = meshRenderer.Length;
- for (int i = 0; i < length; i++)
- {
- int count = meshRenderer[i].materials.Length;
- for (int j = 0; j < count; j++)
- {
- Material _mater = meshRenderer[i].materials[j];
- thisMaterial.Add(_mater);
- shaders.Add(_mater.shader.name);
- }
- }
- SkinnedMeshRenderer[] meshSkinRenderer = GetComponentsInChildren<SkinnedMeshRenderer>(true);
- length = meshSkinRenderer.Length;
- for (int i = 0; i < length; i++)
- {
- int count = meshSkinRenderer[i].materials.Length;
- for (int j = 0; j < count; j++)
- {
- Material _mater = meshSkinRenderer[i].materials[j];
- thisMaterial.Add(_mater);
- shaders.Add(_mater.shader.name);
- }
- }
- ParticleSystem[] particleSys = GetComponentsInChildren<ParticleSystem>(true);
- length = particleSys.Length;
- for (int i = 0; i < length; i++)
- {
- ParticleSystemRenderer render = particleSys[i].GetComponent<ParticleSystemRenderer>();
- int count = render.materials.Length;
- for (int j = 0; j < count; j++)
- {
- Material _mater = render.materials[j];
- thisMaterial.Add(_mater);
- shaders.Add(_mater.shader.name);
- }
- }
- TrailRenderer[] trailSys = GetComponentsInChildren<TrailRenderer>(true);
- length = trailSys.Length;
- for (int i = 0; i < length; i++)
- {
- int count = trailSys[i].materials.Length;
- for (int j = 0; j < count; j++)
- {
- Material _mater = trailSys[i].materials[j];
- thisMaterial.Add(_mater);
- shaders.Add(_mater.shader.name);
- }
- }
- }
- void Start()
- {
- for (int i = 0; i < thisMaterial.Count; i++)
- {
- thisMaterial[i].shader = Shader.Find(shaders[i]);
- }
- }
- }
|