TIL 1221 효과음 재생 함수 구현

강성원·2023년 12월 21일
1

TIL 오늘 배운 것

목록 보기
1/69

오늘 한 일

  • 카드 매칭 게임 추가 구현에서 내가 맡았던 부분은 게임에 진입할 때, 카드끼리 매치 성공했을 때, 실패했을 때의 효과음 부여였다.
    배경음이나 매치 성공 효과음은 이전에 강의를 보고 구현했어서 실패효과음은 생각할 부분도 없었다.
    조금 더 나아가서 오디오 매니저의 '관리자 다운' 역할을 더 부여하기 위해서 유니티의 오디오 매니저 구현에 대해서 찾아보았다.

  • 깔끔하고 팀원들과 공유하고싶은 마음이 들게하는 방법을 찾아서 그 방법대로 구현했다.
    많은 사람들이 각자만의 방법으로 오디오 매니저를 구현해놓았지만, 그 중에 제일 깔끔해보였던 방법을 택했다.
    참고한 영상 링크 : https://youtu.be/KJfzT1VfOaM?si=LAJyRg1kxFx3vOQ2
    코드가 너무 깔끔하고 좋아서 복붙 수준으로 갖다 썼으니 구조의 이해와 응용에 더 힘을 썼다.

  • 기능을 추가한 오디오 매니저 코드

public class AudioManager : MonoBehaviour
{
    public static AudioManager Audio;

    public AudioSource audioSource;
    public AudioClip bgm;

    private void Awake()
    {
        Audio = this;
    }

    void Start()
    {
        audioSource.clip = bgm;
        audioSource.Play();
    }

    public void SFXPlay(string sfxName, AudioClip clip)
    {
        GameObject newObj = new GameObject(sfxName+"_Sound");
        AudioSource audioSource = newObj.AddComponent<AudioSource>();
        audioSource.clip = clip;
        audioSource.Play();

        Destroy(newObj, clip.length);
    }
}

효과음을 한 번 재생해주는 SFXPlay함수를 추가했다.

매니저에 추가한 함수 내용
첫 번째 매개변수는 새로 생성된 오브젝트를 구분하기 위한 인식표이다.
두 번째 매개변수는 AudioClip으로 재생시키고자 하는 AudioClip을 받아온다.
1. 오디오 매니저가 새로운 오브젝트를 만듦
2. 오브젝트에 오디오 리소스를 붙여줌
3. 매개변수로 오디오 클립을 받음
4. 클립을 재생하고 클립의 재생을 마치면 오브젝트를 소멸시킴

오디오 매니저를 싱글톤으로 만들어주고 아래 코드처럼 문자열과 오디오 클립을 넘겨주어 사용할 수 있다.

AudioManager.Audio.SFXPlay("match", match);

다른 스크립트에 중구난방으로 있던 AudioSource를 없애자!

오늘 느낀점

  • 오디오를 오디오 매니저에서 관리하는 법을 살짝 맛보았다. 좀 재미있을지도?
  • 이번 미니 프로젝트는 협업을 살짝 핥아보는 느낌이기에 구현에서는 어려울 것이 없었고, 오히려 나의 머뭇거림?같은 것을 느꼈다. 좀만 더 거침없는 내가 되기를. ㅎㅎ
  • 팀원분들이 굉장히 앞장서서 진행 해주시는 느낌이었다. 팀원분들을 잘 만났다는 생각이면서도, 낯을 많이 가리는 내가 좀 더 열심히 해야겠다는 생각도 들었다. 파이팅이다.
  • 부트캠프가 끝날 때에는 한 명의 개발자로서 지금보다 더 당당한 모습이 됐으면 좋겠다.

내일 할 일

  • 내일은 "실패할 때 마다 시간 감소 효과"를 구현할 예정이다. 어렵지 않아보이고 금방 끝날 느낌이라 추가적으로 구현할 것도 생각해보면 좋을듯하다.
  • 브금을 트는 함수도 구현해보면 좋겠다.
  • 만약만약만약 시간이 남으면 C#도 깊게 파보는 시간을 가질 예정.
profile
개발은삼순이발

0개의 댓글