public bool GetItemDelayTime(int i, ref float delayTime)
    {
        if (i < 0 && i >= realSpe.elems.Count)
        {
            return(false);
        }

        delayTime = SpecialEffectEditorUtility.GetElemDelayTime(realSpe.elems[i]);
        return(true);
    }
    public bool SetItemDelayTime(int i, float startTime)
    {
        if (i < 0 && i >= realSpe.elems.Count)
        {
            return(false);
        }

        //realSpe.elems[i].DelayTime = realSpe.elems[i].DelayTime + startTime - realSpe.elems[i].StartTime;
        float newDelayTime = SpecialEffectEditorUtility.GetElemDelayTime(realSpe.elems[i]) + startTime - realSpe.elems[i].startTime;

        SpecialEffectEditorUtility.FixElemDelayTime(realSpe.elems[i], newDelayTime);

        //realSpe.elems[i].DelayTime = delayTime;
        if (SpecialEffectEditorUtility.GetElemDelayTime(realSpe.elems[i]) < 0f)
        {
            //realSpe.elems[i].DelayTime = 0f;
            SpecialEffectEditorUtility.FixElemDelayTime(realSpe.elems[i], 0f);
        }

        _RecalcTotalTime();
        IsDirty = true;
        return(true);
    }