123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- 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<Material> 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<SkinnedMeshRenderer>();
- 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();
- }
- }
- }
|