IceFrozen.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using ET;
  2. using UnityEngine;
  3. using System;
  4. namespace Mono
  5. {
  6. public class IceFrozen : MonoBehaviour
  7. {
  8. [Header("冰冻效果材质")]
  9. public Material IceMaterial;
  10. public bool IsFroze { get; protected set; }
  11. private SkinnedMeshRenderer Render;
  12. private ListComponent<Material> NewMaterials = new();
  13. private Material[] OriginMaterials = null;
  14. private void Awake()
  15. {
  16. if(IceMaterial == null)
  17. {
  18. Log.Error($"Not set IceMaterial @{gameObject.name}");
  19. return;
  20. }
  21. IsFroze = false;
  22. Render = transform.GetComponentInChildren<SkinnedMeshRenderer>();
  23. foreach(var mat in Render.sharedMaterials)
  24. {
  25. NewMaterials.Add( mat );
  26. }
  27. OriginMaterials = Render.materials;
  28. IceMaterial.SetFloat("_Frezz", 0.0f);
  29. }
  30. public void StartFroze()
  31. {
  32. if (IsFroze) return;
  33. IsFroze = true;
  34. NewMaterials.Add(IceMaterial);
  35. Render.sharedMaterials = NewMaterials.ToArray();
  36. }
  37. public void ClearFroze()
  38. {
  39. if(!IsFroze) return;
  40. IsFroze = false;
  41. NewMaterials.Remove(IceMaterial);
  42. Render.sharedMaterials = NewMaterials.ToArray();
  43. }
  44. }
  45. }