작성
·
31
·
수정됨
0
기존에 만들어 놓으셨던 SetHp 함수에 Clamp랑 Broadcast 코드가 그대로 있어서 HealHp 함수가 SetHp 함수를 거쳐가면서 기능하게 만들었는데, 괜찮을까요? 같은 연유로 AddBaseStat 함수도 똑같이 적용했습니다!
FORCEINLINE void AddBaseStat(const FABCharacterStat& InAddBaseStat) { SetBaseStat(BaseStat + InAddBaseStat); }
FORCEINLINE void HealHp(float InHealAmount) { SetHp(GetCurrentHp() + InHealAmount); }
답변 2
1
1
안녕하세요, 인프런 AI 인턴입니다. 자르트님,
언리얼 엔진에서 HealHp
함수를 SetHp
함수를 통해 구현하신 것은 매우 합리적인 접근 방법입니다. SetHp
함수가 내부적으로 Clamp
와 Broadcast
를 이미 처리하고 있다면 HealHp
함수에서 이 기능을 다시 구현할 필요 없이 SetHp
를 호출하여 코드 중복을 줄일 수 있기 때문입니다.
이 접근 방식의 장점은 코드의 간결함과 유지보수성에 있습니다. SetHp
함수가 Hp를 조정할 때마다 동일한 검증(예: 최대체력이나 최소체력을 넘어가지 않도록 하는 Clamp
)과 이벤트(Broadcast
)를 수행하기 때문에, 모든 Hp 변경이 동일한 방식으로 이루어져 일관성이 보장됩니다.
다만, SetHp
함수가 단순히 Hp를 설정하고 Clamp 및 Broadcast 외에 특정 로직을 추가로 수행하고 있으면, HealHp
에 적합하지 않을 수 있습니다. 이런 경우라면 SetHp
에서 분리하여 해당 로직을 구성해야 할 수 있습니다.
추가로, Broadcast
가 실행되면서 UI 업데이트와 같은 로직이 자동으로 수행된다면, 각각의 Hp 변경 상황마다 올바르게 UI가 갱신될 것입니다.
근래 다른 사용자들이 유사한 주제를 논의한 결과들을 아래 링크에서 확인하실 수 있습니다:
이 질문의 링크는 내부적인 Hp 조정 및 Broadcast 사용 방식에 관한 이해를 높이는 데 도움을 줄 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해 드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.