๐
2025-09-17
๊ฒ์์์ ํ๋ ์ด์ด์๊ฒ ์ ์ฉ๋ ๋ฒํ/๋๋ฒํ ์ํ์ดํํธ๋ฅผ ์ค์๊ฐ์ผ๋ก ํ์ํ๋ UI ์์คํ ๊ตฌํ
GGBuffContainerWidget: ์ฌ๋ฌ ์ดํํธ๋ค์ ๊ด๋ฆฌํ๋ ์ปจํ
์ด๋GGBuffSlotWidget: ๊ฐ๋ณ ์ดํํธ๋ฅผ ํ์ํ๋ ์ฌ๋กฏ// ์ดํํธ ์ถ๊ฐ/์ ๊ฑฐ ์ด๋ฒคํธ ๋ฐ์ธ๋ฉ
ASC->OnActiveGameplayEffectAddedDelegateToSelf.AddUObject(this, &UGGBuffContainerWidget::OnGameplayEffectAdded);
ASC->OnAnyGameplayEffectRemovedDelegate().AddUObject(this, &UGGBuffContainerWidget::OnGameplayEffectRemoved);
์ํฉ: 3์ด ๋ฒํ๋ฅผ 1์ด ํ์ ๋ค์ ์ ์ฉํ๋ฉด, ์ฒซ ๋ฒ์งธ ๋ฒํ ๋ง๋ฃ ์ UI์์ ์์ ํ ์ฌ๋ผ์ง
์์ธ: ์ธ๋ฆฌ์ผ์์ ๊ฐ์ ์ดํํธ ์ฌ์ ์ฉ ์ ๊ธฐ์กด ์ดํํธ ์ ๊ฑฐ โ ์ ์ดํํธ ์ถ๊ฐ ์์๋ก ๋์. ๊ธฐ์กด ์ฝ๋๋ ์ ๊ฑฐ ์ด๋ฒคํธ์์ ํ๊ทธ๋ง ๋ณด๊ณ ๋ฌด์กฐ๊ฑด UI ์ ๊ฑฐ.
ํด๊ฒฐ: ํธ๋ค ๊ธฐ๋ฐ ์ ๊ฑฐ ๋ก์ง ๊ตฌํ
// ์ ๊ฑฐ๋ ํธ๋ค์ด ํ์ฌ ์ถ์ ์ค์ธ ํธ๋ค๊ณผ ๊ฐ์ ๋๋ง UI์์ ์ ๊ฑฐ
if (*TrackedHandle == RemovedEffect.Handle) {
RemoveEffect(EffectTag); // UI์์ ์ ๊ฑฐ
}
์ฒ์์๋ ๋จ์ํ "๊ฐฑ์ ์ด ์๋๋ค"๊ณ ์๊ฐํ์ง๋ง, ์ค์ ๋ก๋ ์ธ๋ฆฌ์ผ ์์ง์ GameplayEffect ๋์ ๋ฐฉ์(์ ๊ฑฐโ์ถ๊ฐ)์ ์ดํดํด์ผ ํ๋ ๋ฌธ์ ์๋ค. ํ๋ฉด์ ์ฆ์์ด ์๋ ๊ทผ๋ณธ ์์ธ์ ์ฐพ๋ ๊ฒ์ด ์ค์ํ๋ค๋ ๊ฑธ ๋ฐฐ์ ๋ค.
ํ๊ทธ๋ง์ผ๋ก ํ๋จํ๋ฉด ๊ฐ์ ์ข
๋ฅ์ ์ฌ๋ฌ ์ธ์คํด์ค๋ฅผ ๊ตฌ๋ถํ ์ ์๋ค. ๊ฐ ๊ฐ์ฒด์ ๊ณ ์ ํ ํธ๋ค์ด๋ ID๋ฅผ ํตํด ์ ํํ ์ํ ๊ด๋ฆฌ๋ฅผ ํด์ผ ํ๋ค๋ ๊ฑธ ๊นจ๋ฌ์๋ค.