public void SetParticleArcColor(ParticleSystem.MinMaxGradient startColor, ParticleSystem.MinMaxGradient overTimeColor)
        {
            ArcArcRenderer prefabRenderer = ArcNotePrefab.GetComponent <ArcArcRenderer>();

            ParticleSystem.MainModule prefabMain = prefabRenderer.JudgeEffect.main;
            prefabMain.startColor = startColor;
            ParticleSystem.ColorOverLifetimeModule prefabColorOverLifetime = prefabRenderer.JudgeEffect.colorOverLifetime;
            prefabColorOverLifetime.color = overTimeColor;
            foreach (ArcArc arc in Arcs)
            {
                ParticleSystem.MainModule main = arc.arcRenderer.JudgeEffect.main;
                main.startColor = startColor;
                ParticleSystem.ColorOverLifetimeModule colorOverLifetime = arc.arcRenderer.JudgeEffect.colorOverLifetime;
                colorOverLifetime.color = overTimeColor;
            }
        }
        public void SetArcColors(Color arcRedLow, Color arcBlueLow, Color arcGreenLow, Color arcRedHigh, Color arcBlueHigh, Color arcGreenHigh, Color arcVoid)
        {
            ArcRedLow    = arcRedLow;
            ArcBlueLow   = arcBlueLow;
            ArcGreenLow  = arcGreenLow;
            ArcRedHigh   = arcRedHigh;
            ArcBlueHigh  = arcBlueHigh;
            ArcGreenHigh = arcGreenHigh;
            ArcVoid      = arcVoid;
            //TODO: arc has slight diifferent color at different hight
            ArcArcRenderer prefabRenderer = ArcNotePrefab.GetComponent <ArcArcRenderer>();

            prefabRenderer.ReloadColor();
            foreach (ArcArc arc in Arcs)
            {
                arc.arcRenderer.ReloadColor();
            }
        }
        public void SetArcBodySkin(Texture2D normal, Texture2D highlight)
        {
            ArcMaterial.mainTexture = normal;
            ArcArcRenderer prefabRenderer = ArcNotePrefab.GetComponent <ArcArcRenderer>();

            prefabRenderer.HighlightTexture = highlight;
            prefabRenderer.DefaultTexture   = normal;
            prefabRenderer.ReloadSkin();
            ArcArcSegmentComponent prefabSegmentComponent = prefabRenderer.SegmentPrefab.GetComponent <ArcArcSegmentComponent>();

            prefabSegmentComponent.HighlightTexture = highlight;
            prefabSegmentComponent.DefaultTexture   = normal;
            prefabSegmentComponent.ReloadSkin();
            foreach (ArcArc arc in Arcs)
            {
                arc.arcRenderer.HighlightTexture = highlight;
                arc.arcRenderer.DefaultTexture   = normal;
                arc.arcRenderer.ReloadSkin();
            }
        }