/// <summary>
    /// 获取技能释放,子阶段数据
    /// </summary>
    /// <param name="skillId"></param>
    /// <param name="childIndex"></param>
    /// <returns></returns>
    public SkillReleaseChildData GetSkillReleaseChildData(int skillId, int childIndex = 0)
    {
        SkillReleaseStageData stageData = GetSkillReleaseStageData(skillId);
        SkillReleaseChildData?childData = stageData.Childs(childIndex);

        Assert.IsTrue(childData.HasValue, $"CfgEternityProxy::GetSkillReleaseChildData->data not exist skillId.id =  {skillId},index = {childIndex}");

        return(childData.Value);
    }
 public void SetData(object data)
 {
     m_ReleaseStageData = (SkillReleaseStageData)data;
     SelectedChildIndex = -1;
     if (m_ReleaseStageData != null && m_ReleaseStageData.Childs.Count > 0)
     {
         SelectedChildIndex = 0;
     }
 }
        private void PrepareRunningData(int skillID)
        {
            m_RunningData.Reset();

            if (IsWeaponSkill)
            {
                m_RunningData.TimeScaleRate = GetWeaponFireInterval(skillID);
            }
            else
            {
                m_RunningData.TimeScaleRate = 1.0f;
            }
            SkillReleaseStageData releaseStageData = m_CfgEternityProxy.GetSkillReleaseStageData(skillID);

            m_RunningData.ReleaseLoopCount = releaseStageData.LoopCount;
        }
        protected override TrackGroup GetTrackGroup(out float timeScale)
        {
            SkillRunningData runningData = Context.GetObject <SkillRunningData>();
            SkillData        skillData   = Context.GetObject <SkillData>();

            int stageIndex = runningData.ReleaseStageIndex;

            SkillReleaseStageData stageData = skillData.ReleaseStageData.Value;

            if (stageData.IsScaleByTime)
            {
                timeScale = runningData.TimeScaleRate;
            }
            else
            {
                timeScale = 1.0f;
            }
            return(stageData.Childs(stageIndex).Value.Group.Value);
        }