사생활 보호 설정
https://gamjia.tistory.com
Updated News
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을 위해
AudioManager와 Audio 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은 이렇게 작성했습니다
주석에 설명을 써두긴 했는데
표로 한번 더 정리하겠습니다
AudioSource, AudioStorage를 입력해주고
각 상황에 맞게 PlaySFX 해주겠습니다
Jump할 때 Jump 넣어주세요
오늘은 Audio 작업이라 움짤 대신
영상 첨부하겠습니다!
상황에 맞게 지정한 효과음들이 잘 나오고 있네요