コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】Audio の DSP Buffer Size を Best latency にした時に Windows の Unity エディタで発生するサウンドの音割れを防ぐエディタ拡張

ソースコード

#if UNITY_EDITOR_WIN

using UnityEditor;
using UnityEngine;

namespace Kogane
{
    /// <summary>
    /// Audio の DSP Buffer Size を Best latency にした時に Windows の Unity エディタで発生するサウンドの音割れを防ぐエディタ拡張
    /// </summary>
    [InitializeOnLoad]
    internal static class FixAudioClippingInWindowsEditor
    {
        static FixAudioClippingInWindowsEditor()
        {
            if ( Application.platform != RuntimePlatform.WindowsEditor ) return;

            EditorApplication.playModeStateChanged += change =>
            {
                if ( change == PlayModeStateChange.EnteredPlayMode )
                {
                    var configuration = AudioSettings.GetConfiguration();
                    configuration.sampleRate    = 0;
                    configuration.dspBufferSize = 1024;
                    AudioSettings.Reset( configuration );
                }
                else if ( change == PlayModeStateChange.ExitingPlayMode )
                {
                    var configuration = AudioSettings.GetConfiguration();
                    configuration.sampleRate    = 0;
                    configuration.dspBufferSize = 256;
                    AudioSettings.Reset( configuration );
                }
            };
        }
    }
}

#endif