12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- using System.Collections.Generic;
- using UnityEngine;
- // ReSharper disable once CheckNamespace
- namespace QFX.SFX
- {
- public static class SFX_MaterialUtil
- {
- public static void ReplaceMaterial(GameObject targetGo, Material templateMaterial)
- {
- var newMaterial = new Material(templateMaterial);
- var rends = targetGo.GetComponentsInChildren<Renderer>();
- foreach (var rend in rends)
- {
- var materialsLength = rend.sharedMaterials.Length;
- var materials = new Material[materialsLength];
- for (int i = 0; i < materialsLength; i++)
- materials[i] = newMaterial;
- rend.sharedMaterials = materials;
- }
- }
- public static void RemoveAllMaterials(GameObject targetGo)
- {
- var rends = targetGo.GetComponentsInChildren<Renderer>();
- foreach (var rend in rends)
- rend.sharedMaterials = new Material[0];
- }
- public static void AddMaterial(GameObject targetGo, Material templateMaterial)
- {
- var newMaterial = new Material(templateMaterial);
- var rends = targetGo.GetComponentsInChildren<Renderer>();
- foreach (var rend in rends)
- {
- var materialsLength = rend.sharedMaterials.Length + 1;
- var materials = new Material[materialsLength];
- for (int i = 0; i < rend.sharedMaterials.Length; i++)
- materials[i] = rend.sharedMaterials[i];
- materials[materialsLength - 1] = newMaterial;
- rend.sharedMaterials = materials;
- }
- }
- public static void ReplaceMaterial(Dictionary<Renderer, Material[]> rendererToMaterials)
- {
- foreach (var rendToMaterials in rendererToMaterials)
- rendToMaterials.Key.sharedMaterials = rendToMaterials.Value;
- }
- public static Dictionary<Renderer, Material[]> GetOriginalMaterials(GameObject targetGo)
- {
- var rendererToMaterials = new Dictionary<Renderer, Material[]>();
- var rends = targetGo.GetComponentsInChildren<Renderer>();
- foreach (var rend in rends)
- rendererToMaterials[rend] = rend.sharedMaterials;
- return rendererToMaterials;
- }
- }
- }
|