OvertakingLegend/Assets/Script/SkillCar/SkillCar.cs

83 lines
1.9 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
/// <summary>
/// 技能车
/// </summary>
public class SkillCar : MonoBehaviour
{
/// <summary>
/// 原本的材质球
/// </summary>
public Material thisMaterial;
/// <summary>
/// 闪烁材质球
/// </summary>
public Material flashingMaterial;
/// <summary>
/// 材质渲染
/// </summary>
public MeshRenderer[] meshRenderers;
/// <summary>
/// 闪烁特效
/// </summary>
private Coroutine flashingCoroutine;
private void OnDisable()
{
if(flashingCoroutine!=null)
{
StopCoroutine(flashingCoroutine);
flashingCoroutine = null;
}
}
/// <summary>
/// 闪烁
/// </summary>
public void Flashing(UnityAction callBack)
{
flashingCoroutine= StartCoroutine(IE_Flashing(callBack));
}
/// <summary>
/// 停止闪烁
/// </summary>
public void StopFlashing()
{
if (flashingCoroutine != null)
{
StopCoroutine(flashingCoroutine);
flashingCoroutine = null;
}
}
/// <summary>
/// 闪烁协程
/// </summary>
/// <returns></returns>
private IEnumerator IE_Flashing(UnityAction callBack)
{
UIManager.Instance.GetUI<GameUI>().SetShimmerCountDownSetActive(true);
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < meshRenderers.Length; j++)
{
meshRenderers[j].material = flashingMaterial;
}
yield return new WaitForSeconds(0.2f);
for (int j = 0; j < meshRenderers.Length; j++)
{
meshRenderers[j].material = thisMaterial;
}
yield return new WaitForSeconds(0.2f);
}
callBack?.Invoke();
}
}