UE - UI와 사운드
UnrealEngine
옵션 UI에 사운드 볼륨을 조절하는 슬라이더를 구현해봤다.
이미지를 아직 못구해서 기능만 만들어봤다.
원래는 사운드 매니저를 만들어 내가 원하는 사운드를 재생해야하나 고민했지만 찾아보니 간단했다.
위젯 블루프린트인데, 이렇게 값이 바뀔 때 값을 Set Sound Mix Class Override
함수에 넣어주면 간단하게 해당 사운드 클래스의 볼륨을 줄일 수 있다.
이제 사용하는 모든 사운드 큐들의 관계를 정해주면 된다.
나는 UI 효과음 담당 클래스인 SC_System
, 배경음악 담당 SC_BGM
, 전투 사운드 담당 SC_Combat
사운드 클래스를 만들었고 이 모든 클래스의 부모로 Master
클래스를 사용했다.
지금은 문제가 하나 있는데, BGM의 볼륨의 0이되면 BGM 재생이 종료되어서 문제다.
이건 아직 해결하지 못했다.
이것 말고 하나 더 배운 것이 있다면 위젯의 비저빌리티 부분이다.
Option UI에서 다른 위젯을 생성할 때, 버튼 클릭이 되지 않는 버그를 해결하면서 배운 거다.
보통 패널을 생성하면 기본 비저빌리티 속성은 Not Hit-Testable (Self)
로 되어있다.
HitTestInvisible은 마우스 커서 히트 테스트가 되지 않아서 가능한 일이다.
이 상태에선 패널과 겹쳐진 다른 HUD의 버튼을 누를 때 정상 작동하는다.
하지만 패널이 포함된 HUD의 Set Visibility 를 Visible로 설정하게 되면 클릭이 되지 않는다.
때문에 다른 방법을 생각했는데, Remove from Parent를 사용하는 것이다.
Remove from Parent를 사용하면 위젯을 화면에서 지우고, 참조자가 없다면 가비지 컬렉터가 삭제시킨다.
하지만 위젯을 변수에 저장한 상태라면, 가비지 컬렉터가 삭제하지 않는다.
때문에 생성자에서 위젯들을 만들어 놓고,
필요할 때 뷰포트에서 지우거나 더하는 방식으로 구현했다.
이러면 매 번 생성하지 않아서 성능적으로 좀 더 좋을 것이라 생각한다.
Comments powered by Disqus.