IceFrozen.cs 1.3 KB

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