inflearn logo
강의

Course

Instructor

[Unity Practical Project] Burger Please Recreation

사운드를 어떻게 플레이 시켜야 하나요

80

chabin71819322

2 asked

0

각 상황에 맞는 사운드를 플레이하도록 구현하고 있는데요.

Interaction 함수 안에서 사운드 출력 코드를 추가했는데 소리가 제대로 나오지 않고 계속 반복되서 출력되는 것처럼 치지지직 하다가 끝나버립니다.

	void OnMoneyInteraction(WorkerController wc)
	{
		if (!wc.Tray.IsPlayer || _moneyPile.ObjectCount == 0)
			return;

		_moneyPile.DeSpawnObjectWithJump(wc.transform.position, () =>
		{
			GameManager.Instance.AddMoney(Define.MONEY_PER_BURGER);
			GameManager.Instance.AddExp(1f);
			SoundManager.Instance.PlaySFX("SFX_Money_Get");
		});
	}

그래서 제대로 한번만 사운드가 출력되도록 하기 위해 bool형 예외처리를 해서 코드를 수정했더니 0.1초만에 소리가 났다가 사라집니다.

 

audioSource 제대로 부착했고 loop 체크x, PlayOnAwake 체크 등 기본적인 것들은 다 제대로 세팅했습니다.

어떻게 해야 제대로 된 소리를 출력할 수 있나요?

public class SoundManager : Singleton<SoundManager>
{
    [Header("BGM")] public AudioSource bgmSource;
    [Header("SFX")] public AudioSource sfxSource;
    [Header("SFX Clips")] public List<AudioClip> sfxClips;
    [Header("BGM Clips")] public List<AudioClip> bgmClips;

    public void PlaySFX(string clipName)
    {
        AudioClip clip = sfxClips.Find(c => c.name == clipName);
        if (clip != null)
        {
            sfxSource.volume = 1f;
            sfxSource.PlayOneShot(clip);
        }
        else
        {
            Debug.LogError($"SFX clip not found: {clipName}");
        }
    }

 

C# unity 유니티6

Answer 1

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다.

쿠쿠쿠쿠쿠쿠님, 게임에서 상황에 맞는 사운드를 제대로 출력하는 문제는 많은 개발자가 겪는 일반적인 문제입니다. 음향 출력 문제는 주로 아래와 같은 원인으로 발생할 수 있습니다.

  1. Audio 파일 설정: 먼저, 재생하려는 사운드 파일(SFX_Money_Get)이 적절히 설정되어 있는지 확인해야 합니다. Loop 설정이 되어 있지 않아야 하고, 파일이 깨지지 않았는지 확인해 보세요.

  2. 서로다른 스레드에서의 호출: 사운드를 처리하는 메소드가 여러 스레드에서 동시에 호출되지 않도록 해야 합니다. 실제로 한 번만 트리거되어야 할 이벤트가 여러 번 트리거될 수 있습니다.

  3. AudioSource 설정 확인: SoundManager.Instance.PlaySFX() 메소드에서 사용되는 AudioSource의 설정을 점검하세요. 볼륨, 피치, 클립 할당 등을 검사해 주세요.

  4. 사운드 매니저 로직: SoundManager.Instance.PlaySFX() 함수 내부 로직을 점검해 보세요. 사운드를 반복처리 하지 않도록 관련 코드를 검토합니다. 또한, 다른 이벤트가 같은 소리를 동시에 트리거하지 않도록 체크하는 부분이 있는지 확인합니다.

기존 질문 게시판에서 유사한 고민을 해결한 예제를 찾아봤습니다. 비슷한 문제가 언급된 게시물은 다음과 같습니다:

  • 시작시 @Sound가 생성안되고있습니다.: Init 메소드에서 Roots의 잘못된 접근으로 인한 문제를 해결합니다. 초기화 과정이나 조건 검증 부분에서 같은 문제가 발생할 수 있으니 참고해 보세요.

  • 타격시 소리를 추가한다고 한다면: 적절한 위치에서 Managers.Sound.Play 메소드 호출의 방법에 대한 고민을 다룹니다. 적절한 시점과 한 번만 실행되도록 하는 방법에 대한 고민이 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

프로젝트 질문 문의

0

33

1

UI 기능 관련 질문이 있습니다!

0

24

2

03-01 (16. CharacterController)

0

23

2

TLS 질문드립니다.

0

36

2

Task 구현 28:36 Equals 에서 잘 모르는 부분이 있습니다.

0

21

2

SpinLock과 컨텍스트스위칭에 대해 질문 남겨요.

0

41

2

픽셀 좌표 스크린 좌표

0

27

0

Locomotion랑 Turn 이 꼭 부모 자식 관계일 필요가 있나요?

0

20

1

Rider대신 VS를 써도 괜찮나요?

0

104

2

Claude Code Pro구독하고 있는 상태에서 크레딧 결제, 사용문의

0

160

2

LobbyUIController의 백키가 사라졌는데 왜그런건가요?

0

39

2

무조건 타이틀 씬부터 시작해야하나요?

0

36

1

씬 배치 구조에서 Addressables를 어떻게 적용해야 하는지 궁금합니다.

0

50

1

buger please 모작 pc버전으로 만들기

0

72

2

3D인데 직교투영?

0

92

1

오피스 구현 Door 질문

0

80

1

완제품 코드로 분석할려고 하는데. 작성 순서(흐름)이 이해가 안됩니다ㅠㅠ

1

117

1

12강 npc 네비게이션 위치 질문입니다.

0

78

1

궁금하게 있습니다.

0

134

1

손님AI에서 0:13 초 나오는 Q로 해도 되긴하는데

0

66

1

NullReferenceException 에러

0

104

2

10강 애니메이션 강의에서 enum EState부분 질문있습니다.

0

102

2

튜토리얼

0

145

3

Scripts 폴더 만들 때 왜 골뱅이(@) 붙이나요?

0

184

2