그래서 저는 수업 시간이 얼마나 모 놀리 식인지 생각하고있었습니다. 예를 들어, Character
클래스의 Jump
메서드에서 사운드 효과 객체에 대한 참조를 가지고 재생할 수 있습니다. 그 자체로는 괜찮지 만 물리, 애니메이션, 충돌 등을 고려할 때 Jump 메서드가 커지고 Character
클래스는 여러 가지 요소에 많은 의존성을 갖습니다. 그래도 괜찮을 수도 있습니다. 그러나 캐릭터가 점프 할 때 더 이상 소리를 재생하지 않으려면 어떻게해야합니까? 이제 코드의 혼란에서 특정 코드 줄을 찾아서 Jump
주석 처리해야합니다.
그래서 .. 나는 생각하고 있었다.
대신 어떤 종류의 AudioSystem
클래스가 있었고 다른 클래스에 관심이있는 임의의 이벤트를 구독하면됩니다. 예를 들어 클래스에는 메소드 의 클래스 내에서 발생 Character
하는 Jumped
이벤트 (정적도 가정합니다)가 있을 수 있습니다 Character
. 그런 다음 Character
클래스는 캐릭터가 점프 할 때 재생되는 작은 사운드 효과에 대해 전혀 알지 못합니다. 이것은 AudioSystem
정적 이벤트를 사용하여 게임에서 발생하는 특정 이벤트와 사운드 효과를 연결하기 위해 프로그래머가 후퇴 할 수있는 거대한 클래스 일 것입니다. 너무 큰 가지고 있다면, 그것은 같은 서브 클래스에서 분리 될 수있는 EffectsAudioSystem
, BackgroundAudioSystem
, AmbientAudioSystem
, 등등.
그런 다음 게임 옵션에서 이러한 종류의 사운드를 활성화 또는 비활성화하는 확인란이있을 수 있으며 간단하고 단일 부울 플래그를 사용하여 해당 시스템 하나만 비활성화하면됩니다. 시스템에 대한이 개념은 물리, 애니메이션 등과 같은 것들로 확장 될 수 있으며, 이러한 정교한 시스템과 분리 된 시스템을 통해 플레이어의 행동으로 인한 대부분의 게임 반응이 연결될 수 있습니다.
좋아, 내 질문은 약간 모호 할 수 있지만, 이런 종류의 소리는 어떻게 들립니까? 나는 이런 종류의 시스템에 대한 많은 이야기를 들어 본 적이 없다. 이것은 지금까지 어떤 코딩도하지 않고 지금 머릿속에 있습니다. 아마도 "이론에는 좋지만 실제로는 아닙니다"종류의 거래 중 하나 일 것입니다. 이런 종류의 시스템이 더 큰 게임에서 작동합니까? 아니면 결국 원래 시스템보다 더 많은 스파게티 엉망이 될까요?