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); }