Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 오블완
- C#문법
- c# 백준
- Unity
- c#기본문법
- 스파르타코딩클럽
- unity게임만들기
- 유니티게임만들기
- c#코딩기초트레이닝
- unity게임
- 유니티상호작용
- 시샵
- Console.WriteLine
- 유니티서바이벌게임만들기
- c#코테
- c#기초문법
- unity3d게임만들기
- unity공부
- 시샵문법
- 티스토리챌린지
- 유니티공부
- unity3dservival
- c#문제
- c# c#프로그래머스
- unity3d
- 스파르타
- 유니티
- 유니티3dui
- c#프로그래머스기초문법
- c#
Archives
- Today
- Total
나 개발자 진짜 되냐?
[ 12月 26日 ] 오늘 내가 배운 것 _ 71日次 _ 크리스마스 다음날도 사운드매니저를! 본문
이브에 만들어둔 스켈리톤 코드를 가지고 발전시키는 시간을 가질 예정이다.
분명 발전시켰는데..
비동기로 만들어주었고
효과음과 bgm을 동시에 만들어주기 위해 두 가지를 다 썼다.
public class SoundManager : Singleton<SoundManager>
{
private Dictionary<string, AudioClip> soundList = new Dictionary<string, AudioClip>();
private AudioSource bgmSource;
private AudioSource sfxSource;
protected override void Awake()
{
base.Awake();
bgmSource = gameObject.AddComponent<AudioSource>();
sfxSource = gameObject.GetComponent<AudioSource>();
bgmSource.loop = true; // 배경음 반복 설정
}
// 비동기로 사운드 로드
public async Task<AudioClip> LoadSoundAsync(string soundName)
{
if (!soundList.ContainsKey(soundName))
{
// ResourceManager를 통해 비동기적으로 오디오 로드
AudioClip clip = await ResourceManager.Instance.LoadAssetAsync<AudioClip>(soundName, eAssetType.Sound);
if (clip != null)
{
soundList[soundName] = clip;
Debug.Log($"Sound {soundName} loaded successfully.");
return clip;
}
else
{
Debug.LogError($"Failed to load sound: {soundName}");
return null;
}
}
return soundList[soundName]; // 이미 로드된 경우 캐싱된 클립 반환
}
// 노래 재생
public async void PlayBGM(string soundName)
{
AudioClip clip = await LoadSoundAsync(soundName);
if (clip != null)
{
bgmSource.clip = clip;
bgmSource.Play();
Debug.Log($"Playing sound: {soundName}");
}
else
{
Debug.LogError($"Sound {soundName} could not be played.");
}
}
//효과음 재생
public async void PlaySFX(string soundName, float volume = 1.0f)
{
AudioClip clip = await LoadSoundAsync(soundName);
if (clip != null)
{
sfxSource.PlayOneShot(clip, volume);
Debug.Log($"Playing SFX: {soundName}");
}
else
{
Debug.LogError($"SFX {soundName} could not be played.");
}
}
// 씬 사운드 로드
public async Task LoadSceneSoundsAsync(List<string> loadSounds)
{
foreach (var soundName in loadSounds)
{
await LoadSoundAsync(soundName);
}
}
// 모든 사운드 제거
public void UnloadAllSounds()
{
soundList.Clear();
Debug.Log("All sounds unloaded.");
}
// 특정 사운드 제거
public void UnloadSound(string soundName)
{
if (soundList.ContainsKey(soundName))
{
soundList.Remove(soundName);
Debug.Log($"Sound {soundName} unloaded.");
}
}
}
오브젝트 풀링으로 만들라는
미션을 받았다.
..다시 짜봐야겠다!
'오늘 공부를 정리해봐요!' 카테고리의 다른 글
[ 1月 2日 ] 오늘 내가 배운 것 _ 75日次 _ 2025의 시작 (0) | 2025.01.02 |
---|---|
[ 12月 30日 ] 오늘 내가 배운 것 _ 73日次 _ 컴투스, 딱 대 (1) | 2024.12.30 |
[ 12月 24日 ] 오늘 내가 배운 것 _ 70日次 _ 크리스마스 이브엔 사운드매니저를! (1) | 2024.12.24 |
[ 12月 23日 ] 오늘 내가 배운 것 _ 70日次 _ 오늘 발표 완료! (4) | 2024.12.23 |
[ 12月 20日 ] 오늘 내가 배운 것 _ 69日次 _ 오늘도 발표 자료 준비中 (4) | 2024.12.20 |