我尝试将您的脚本翻译为简体中文:

using UnityEngine;

public class ACStyleLightsRandom : MonoBehaviour
{
    [系统头]
    [选项]
    公共音频源 { get; set; }
    公共 float.bpm = 100F

    [系统头]
    [选项]
    [光源]
    公共SkinnedMeshRenderer[]灯光

    [系统头]
    [视觉]
    公共 float.maxIntensity = 4f;
    公共 float.fadeSpeed = 2f;

    [系统头]
    [颜色]
    公共 float.colorLerpSpeed = 3f;
    公共 float.minBrightness = 0.6f;

    private float.beatInterval;
    private MaterialPropertyBlock.mpb;
    private Color[] currentColors;
    private Color[] targetColors;

    void Start()
    {
        mpb = new MaterialPropertyBlock();

        beatInterval = 60F / bpm;

        currentColors = new Color[灯光.Length];
        targetColors = new Color[灯光.Length];

        for (int i = 0; i <灯光.Length; i++)
        {
            currentColors[i] = GetRandomColor();
            targetColors[i] = currentColors[i];
        }

        audioSource.Play();
        StartCoroutine(主循环());
    }

    void Update()
    {
        for (int i = 0; i <灯光.Length; i++)
        {
            currentColors[i] = Color.Lerp(
                currentColors[i],
                targetColors[i],
                Time.deltaTime * colorLerpSpeed
            );
        }
    }

    IEnumerator MainLoop()
    {
        while (true)
        {
            yield return StartCoroutine(OutsideToCenter());
            yield return StartCoroutine(CenterToOutside());
        }
    }

    IEnumerator OutsideToCenter()
    {
        int 左边 = 0;
        int 右边 =灯光.Length - 1;

        while (左边 <= 右边)
        {
            yield return StartCoroutine(AnimateLight(左边));
            if (左边 != 右边)
            {
                yield return StartCoroutine(AnimateLight(右边));
            }
            左边++;
            右边--;
        }
    }

    IEnumerator CenterToOutside()
    {
        int 中心 =灯光.Length / 2;

        for (int i = 0; i <= 中心; i++)
        {
            int 左边 = 中心 - i;
            int 右边 = 中心 + i;

            if (左边 >= 0)
            {
                yield return StartCoroutine(AnimateLight(左边));
            }
            if (右边 < 灯光.Length && 右边 != 左边)
            {
                yield return StartCoroutine(AnimateLight(右边));
            }
        }
    }

    IEnumerator AnimateLight(int 索引)
    {
        targetColors[索引] = GetRandomColor();

        float t = 0F;

        while (t < 1F)
        {
            t += Time.deltaTime * fadeSpeed;

            float 强度 = Mathf.Lerp(0F, maxIntensity, t);
            Apply(索引, 强度);

            yield return null;
        }

        t = 0F;

        while (t < 1F)
        {
            t += Time.deltaTime * fadeSpeed;

            float 强度 = Mathf.Lerp(maxIntensity, 0F, t);
            Apply(索引, 强度);

            yield return null;
        }

        yield return new WaitForSeconds(beatInterval * 0.5F);
    }

    Color GetRandomColor()
    {
        float h = Random.value;
        float s = Random.Range(0.6F, 1F);
        float v = Random.Range(minBrightness, 1F);

        return Color.HSVToRGB(h, s, v);
    }

    void Apply(int 索引, float 强度)
    {
        Color 最终 = currentColors[索引] * 强度;

        lights[索引].GetPropertyBlock(mpb);
        mpb.SetColor("_LightColor", 最终);
        lights[索引].SetPropertyBlock(mpb);
    }
}

上述脚本的核心功能是根据 Audio Souce 输出的音频信号调整几组 LED 灯的颜色和亮度,实现一系列的动态效果,其中包括了外向中间和中间向外的波动效果。