public void Set(Automation.TargetParam param, float value)
        {
            if (m_ignoreParam.Contains(param))                                                  // 무시 목록에 없을 때만 실행한다.
            {
                return;
            }

            var info = s_infoDict[param];

            if (info.mixerParamName != null)                                                    // ExposedParam을 조절하는 케이스
            {
                m_mixer.SetFloat(info.mixerParamName, info.ToMixerParamValue(value));
            }
            else
            {                                                                           // Snapshot을 조절하는 케이스
                AudioMixerSnapshot [] snapshots;
                if (!m_snapshotDict.TryGetValue(param, out snapshots))                  // 해당 파라미터에 맞는 스냅샷 목록을 아직 레퍼런스로 소유하고 있지 않다면, 찾아서 등록
                {
                    int namecount = info.snapshotNames.Length;
                    snapshots = new AudioMixerSnapshot[namecount];
                    for (int i = 0; i < namecount; i++)
                    {
                        snapshots[i] = m_mixer.FindSnapshot(info.snapshotNames[i]);
                    }
                    m_snapshotDict[param] = snapshots;
                }

                var calcvalue = info.ToMixerParamValue(value);
                _temp_snapshot_weight[0] = 1 - calcvalue;
                _temp_snapshot_weight[1] = calcvalue;
                m_mixer.TransitionToSnapshots(snapshots, _temp_snapshot_weight, 0.1f);
            }
        }
 /// <summary>
 /// 볼륨만 컨트롤한다.
 /// </summary>
 /// <param name="param"></param>
 /// <param name="value"></param>
 public void Set(Automation.TargetParam param, float value)
 {
     if (param == Automation.TargetParam.Volume)
     {
         m_source.volume = value;
     }
 }
 /// <summary>
 /// 오토메이션 적용을 무시할 파라미터 세팅
 /// </summary>
 /// <param name="param"></param>
 public void AddParamToIgnore(Automation.TargetParam param)
 {
     m_ignoreParam.Add(param);
 }