Short Cake
8PM - Animal Crossing Wild World

사생활 보호 설정

https://gamjia.tistory.com

Mini Rooms

  • 내 미니룸
  • 미니미설정
  • 미니룸설정
  • 답글수 [0]

What Friends Say

한마디로 표현해봐~

1촌평 관리

Unity 6 Challenge - 7

GamJia 2024. 12. 29. 23:02

Unity 6 Kimchi Run - 7


 

오늘은 영상에 없는 내용을

따로 추가할 예정입니다

바로 Audio 작업이에요

 

https://dova-s.jp/

 

フリーBGM(音楽素材)無料ダウンロード|DOVA-SYNDROME

フリーBGM音楽素材を無料ダウンロード配布しています。商用や非商用など、用途を問わず連絡不要でご自由にご利用頂けます。[配信BGM素材数 17283曲/SE素材数 1318音 2025/1/5現在]

dova-s.jp

 


 

일단 Audio Setting을 위해

AudioManagerAudio Source를 2개 넣어주겠습니다

하나는 BGM, 하나는 SFX 용입니다

 


왼쪽이 BGM, 오른쪽이 SFX 입니다

BGM Audio Source에 BGM을 넣어주고

Loop를 활성화 해주겠습니다

SFX Audio Source는 다 비활성화 해주세요

 


using System.Collections.Generic;
using UnityEngine;

[System.Serializable]
public struct AudioStorage  // AudioType과 그에 해당하는 AudioClip을 묶어서 저장
{
    public AudioType type; 
    public AudioClip clip; 
}

public enum AudioType   // Audio의 이름(종류)을 나열한 데이터 타입
{
    Jump,
    Eat,
    Hit,
    Die
}

public class AudioManager : MonoBehaviour
{

    public static AudioManager Instance => instance;
    private static AudioManager instance;
    [SerializeField] private AudioSource audioSource;   // SFX AudioSource
    [SerializeField] private List<AudioStorage> audioStorage; 

    private Dictionary<AudioType, AudioClip> audioDictionary;   // AudioStorage 리스트의 데이터를 AudioDictionary로 변환해 빠르게 검색 가능하게 만듦

    void Awake()
    {
        if (instance == null)
        {
            instance = this;
            DontDestroyOnLoad(gameObject); 
        }

        audioDictionary = new Dictionary<AudioType, AudioClip>();

        foreach (AudioStorage audio in audioStorage)
        {
            if (!audioDictionary.ContainsKey(audio.type))
            {
                audioDictionary[audio.type] = audio.clip;
            }
          
        }
    }

    public void PlaySFX(AudioType type) // 매개변수로 전달받은 AudioType에 해당하는 AudioClip을 찾아 재생
    {
        if (audioDictionary.TryGetValue(type, out AudioClip clip))
        {
            audioSource.PlayOneShot(clip);
        }
    }
}

 

AudioManager은 이렇게 작성했습니다

주석에 설명을 써두긴 했는데

표로 한번 더 정리하겠습니다

항목 Enum Awake PlaySFX
역할 사운드 종류를 정의 초기화 작업 및 싱글톤 설정 특정 사운드를 재생
설명 Jump, Eat, Hit, Die 등 사운드의 종류를 열거
- 사운드 식별 키로 사용
AudioManager 인스턴스를 생성
- AudioStorage 리스트를 Dictionary로 변환
매개변수로 전달받은 사운드 타입의 효과음을 재생

 


 

 

AudioSource, AudioStorage를 입력해주고

각 상황에 맞게 PlaySFX 해주겠습니다

Jump할 때 Jump 넣어주세요

 


 

 

오늘은 Audio 작업이라 움짤 대신

영상 첨부하겠습니다!

상황에 맞게 지정한 효과음들이 잘 나오고 있네요

 

 

'Game Develop' 카테고리의 다른 글

Unity 6 Challenge  (0) 2025.01.05
Unity 6 Challenge - 8  (0) 2024.12.30
Unity 6 Challenge - 6  (0) 2024.12.28
Unity 6 Challenge - 5  (0) 2024.12.24
Unity 6 Challenge - 4  (2) 2024.12.22