using System.Collections.Generic; using UnityEngine; namespace Mono { public class IceFrozen : MonoBehaviour { [Header("冰冻效果材质")] public Material IceMaterial; public bool IsFroze { get; protected set; } private SkinnedMeshRenderer Render; private List<Material> NewMaterials = new(); private void Awake() { if(IceMaterial == null) { //Log.Error($"Not set IceMaterial @{gameObject.name}"); return; } IsFroze = false; Render = transform.GetComponentInChildren<SkinnedMeshRenderer>(); foreach(var mat in Render.sharedMaterials) { NewMaterials.Add( mat ); } IceMaterial.SetFloat("_Frezz", 0.0f); } public void StartFroze() { if (IsFroze) return; IsFroze = true; NewMaterials.Add(IceMaterial); Render.sharedMaterials = NewMaterials.ToArray(); } public void ClearFroze() { if(!IsFroze) return; IsFroze = false; NewMaterials.Remove(IceMaterial); Render.sharedMaterials = NewMaterials.ToArray(); } } }