using ET; using UnityEngine; using System; namespace Mono { public class IceFrozen : MonoBehaviour { [Header("冰冻效果材质")] public Material IceMaterial; public bool IsFroze { get; protected set; } private SkinnedMeshRenderer Render; private ListComponent NewMaterials = new(); private Material[] OriginMaterials = null; private void Awake() { if(IceMaterial == null) { Log.Error($"Not set IceMaterial @{gameObject.name}"); return; } IsFroze = false; Render = transform.GetComponentInChildren(); foreach(var mat in Render.sharedMaterials) { NewMaterials.Add( mat ); } OriginMaterials = Render.materials; 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(); } } }