Unity 오디오 시스템 설정 및 API 가이드

Unity의 오디오 시스템을 설정하고 조작하는 방법을 이해하기 위한 가이드입니다. 이 문서에서는 AudioSettings 클래스와 관련된 다양한 설정 및 사용 방법을 설명합니다.

1. AudioSettings 클래스

AudioSettings 클래스는 사운드 시스템에 대한 여러 글로벌 정보를 포함합니다. 이 API를 통해 다음과 같은 설정을 런타임 중에 초기화할 수 있습니다:

  • 스피커 모드
  • 샘플 레이트 (플랫폼이 지원하는 경우)
  • DSP 버퍼 크기
  • 리얼 및 가상 음성 개수

이 설정들은 대부분 에디터의 프로젝트 설정에서 변경할 수 있으며, 변경 사항은 게임의 초기 상태를 정의합니다. 그러나 AudioSettings API를 통한 변경은 게임 런타임 중에만 적용됩니다. 게임을 멈추면 초기 상태로 되돌아갑니다.

2. 사용자 사운드 옵션

게임에서 제공하는 사운드 옵션 메뉴를 통해 사용자는 설정을 변경할 수 있습니다. 여기에는 HDMI 모니터와 같은 외부 오디오 입출력 장치의 변경을 반영하는 기능도 포함됩니다.

3. API 설명

몇 가지 중요한 API 메서드가 있습니다:

API 메서드 설명
AudioSettings.GetConfiguration() 현재 사운드 시스템 설정을 읽어옵니다.
bool AudioSettings.Reset(AudioConfiguration config) 새로운 설정으로 오디오 시스템 초기화합니다.
AudioSettings.OnAudioConfigurationChanged(bool device) 오디오 설정이 변경될 때 콜백을 설정합니다.

3.1. 설정 변경 시 주의사항

  • AudioSettings.SetDSPBufferSize(...) 함수는 성능에 영향을 미칠 수 있으며, 전체 오디오 시스템을 초기화하게 되는 부작용이 있습니다.
  • 글로벌 오디오 시스템 설정이 런타임 중에 수정되면 모든 오디오 오브젝트를 재로딩해야 합니다. 이 과정에서 AudioClip 자산이나 오디오 믹서와 같은 디스크 기반의 자산이 영향을 받지만, 스크립트로 생성된 AudioClip은 손실될 수 있습니다.
  • 따라서 재생 상태 또한 손실될 수 있으며, 이를 최소화하기 위해 AudioSettings.OnAudioConfigurationChanged(…) 콜백 함수를 사용하여 재생 상태를 복원해야 합니다.

4. 예제

4.1. 오디오 설정 변경하기

다음은 AudioSettings를 이용해 설정을 변경하는 간단한 코드 예제입니다.

using UnityEngine;

public class AudioManager : MonoBehaviour
{
    void Start()
    {
        // 현재 설정 읽기
        AudioConfiguration config = AudioSettings.GetConfiguration();

        // 설정 변경 (예: 샘플 레이트 변경)
        config.sampleRate = 48000; // 변경할 샘플 레이트
        AudioSettings.Reset(config); // 변경 적용
    }
}

4.2. 오디오 설정 변경 감지하기

아래 코드는 오디오 설정이 변경될 때 콜백 함수를 사용하는 예제입니다.

using UnityEngine;

public class AudioListener : MonoBehaviour
{
    void OnEnable()
    {
        AudioSettings.OnAudioConfigurationChanged += OnAudioConfigChanged;
    }

    void OnDisable()
    {
        AudioSettings.OnAudioConfigurationChanged -= OnAudioConfigChanged;
    }

    void OnAudioConfigChanged(bool deviceWasChanged)
    {
        // 설정이 변경되었을 때의 처리
    }
}

마무리

Unity의 AudioSettings API는 게임의 오디오 시스템을 동적으로 제어할 수 있는 강력한 도구입니다. 설정 변경, 오디오 목록 갱신 등 다양한 기능을 활용하여 효과적인 오디오 경험을 제공할 수 있습니다. 더 많은 세부 정보와 예제는 스크립팅 API 레퍼런스를 참조하세요.

Read more

Unity 매뉴얼 스크립팅 API 해설

이 문서는 Unity의 매뉴얼 스크립팅 API에 대한 간단한 해설과 활용 예제들을 포함하고 있습니다. Unity는 게임 개발 플랫폼으로, 스크립팅 API를 통해 게임의 다양한 기능을 제어하고 수정할 수 있습니다. 버전 Unity 스크립팅 API는 여러 버전으로 제공됩니다. 주의 깊게 선택하여 사용하는 것이 중요합니다. 버전 설명 2023.2 최신 기능 및 버그 수정이 추가됨

By 이재협/실장/시스템개발실/PHYSIA

Unity 매뉴얼 스크립팅 API 설명서 해설

이 문서는 Unity의 매뉴얼 스크립팅 API에 대한 정보를 제공하며, 버전에 따라 다르게 적용되는 내용들을 설명합니다. 본 문서에서는 주요 내용을 간단히 정리하고 활용 가능 예제를 통해 이해를 돕겠습니다. 기본 개념 Unity에서 스크립팅 API는 게임 오브젝트와 그들의 동작을 제어하기 위한 강력한 도구입니다. 이를 통해 게임의 로직, 물리 엔진, 애니메이션 및 사용자 인터페이스를

By 이재협/실장/시스템개발실/PHYSIA

Unity 스크립팅 API 가이드

이 문서는 Unity의 스크립팅 API에 대해 설명합니다. Unity는 게임 개발을 위한 인기 있는 엔진으로, 강력한 스크립팅 기능을 제공합니다. 이 가이드는 Unity에서 스크립트를 작성하고 사용하는 방법을 이해하는 데 도움을 드립니다. 목차 * Unity 스크립팅 소개 * 기본 스크립트 생성 * 스크립트 사용 예제 * 응용 프로그램 * 참고 자료 Unity 스크립팅 소개 Unity는 C# 프로그래밍 언어를

By 이재협/실장/시스템개발실/PHYSIA