Inflearn Community Q&A
No author
This post's author information has been deleted.
안녕하세요 이벤트 버스 패턴에 대해서 궁금한게 있어서요
Written on
·
200
0
안녕하세요 선생님 다름이 아니라
스크립터블 오브젝트를 활용해서 액션 함수를 만들어서 플레이어의 정보를 갱신하고 갱신이 되면 UI 를 관리하는 곳에서 해당 UI 의 정보를 같이 갱신하는 식으로 구현되는 걸로 알고 있는데요
만약에 플레이어의 MaxHp 가 변한다거나 총알의 MaxAmmo 가 변하는 경우에는 UI 를 관리하는 곳에서도 Player와 Weapon 의 정보를 같이 들고 있어야 하는건가요? 아니면 다른 처리 방식이 있을까요?
Quiz
화면 해상도에 따라 UI 요소의 크기가 자동으로 조절되도록 Canvas Scaler를 설정하는 가장 일반적인 모드는 무엇일까요?
Constant Pixel Size
Scale with Screen Size
Constant Physical Size
World Space
Answer 2
0
안녕하세요.
아이템 취득 및 업그레이드를 통해 maxHp, maxAmmo 가 변경된다면 별도의 WeaponManager에서 저장을 해두고 관리하는 것이 SOLID원칙에 부합합니다. UI Manager는 오롯이 받은 이벤트에 대해 UI 변경만 담당하도록 로직을 분리해서 관리하시는 것이 확장성과 유연성 면에서 좋은 개발방식이라고 생각합니다. ~
0
안녕하세요, 인프런 AI 인턴입니다. sunrise3225님.
ScriptableObject를 활용한 이벤트 버스 패턴을 사용하면, 통상적으로 플레이어나 무기의 상태 변화가 있을 때 UI를 업데이트하는 방식으로 활용할 수 있습니다. 이 질문에서 핵심은 UI가 직접적으로 Player와 Weapon의 정보를 들고 있어야 하는지, 아니면 다른 방식으로 처리할 수 있는지입니다.
이벤트 버스 패턴과 UI 업데이트
이벤트 버스 패턴은 상태 변경 이벤트를 구독하고, 이벤트가 발생할 때마다 관련된 시스템(UI 등)을 업데이트하는 방식으로 사용됩니다. 이는 자유도를 높이고 각 시스템 간의 의존성을 줄이는 방법으로 효율적입니다.
이벤트 발행 (Publishing):
- 플레이어의 MaxHp나 무기의 MaxAmmo가 변할 때마다 특정 이벤트(예:
OnMaxHpChanged,OnMaxAmmoChanged)를 발행합니다. 이를 위해 ScriptableObject를 사용할 수 있습니다.
- 플레이어의 MaxHp나 무기의 MaxAmmo가 변할 때마다 특정 이벤트(예:
이벤트 구독 (Subscribing):
- UI 관리 시스템은 이러한 이벤트를 구독하고 있다가, 이벤트가 발생하면 UI를 갱신합니다. 이를 통해 UI가 플레이어나 무기의 세부 정보를 직접적으로 가지고 있지 않아도 상태 변경 시 적절하게 반응할 수 있습니다.
- UI 관리 시스템은 이러한 이벤트를 구독하고 있다가, 이벤트가 발생하면 UI를 갱신합니다. 이를 통해 UI가 플레이어나 무기의 세부 정보를 직접적으로 가지고 있지 않아도 상태 변경 시 적절하게 반응할 수 있습니다.
비동기 및 유연성:
- 이 방법을 통해 플레이어나 무기의 상태 변화에 대해서 UI가 비동기적으로 적절히 반응할 수 있으며, 이는 코드의 유연성과 유지보수성을 크게 향상시킵니다.
- 이 방법을 통해 플레이어나 무기의 상태 변화에 대해서 UI가 비동기적으로 적절히 반응할 수 있으며, 이는 코드의 유연성과 유지보수성을 크게 향상시킵니다.
관련 유사한 질문과 답변
- 비슷한 질문으로는 ScriptableObject로 상태 변화 관리하기를 참고할 수 있습니다. 이 게시물에서는 ScriptableObject를 활용한 상태 변화 관리에 대해 심층적으로 설명하고 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





