๐
2025-11-10
์์ดํ ๋ฐ์ดํฐ์ ๋ฑ๋ก๋ Ability๋ฅผ ์ฆ์ ํ์ฑํํ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ค.
// ์์ดํ
์ฌ์ฉ ์ด๋น๋ฆฌํฐ ํ์ฑํ
UAbilitySystemComponent* ASC = GetASC();
if (!ASC)
{
UE_LOG(LogTemp, Warning, TEXT("UseItem failed: No ASC found"));
return;
}
FItemData ItemInfo;
if (!GetItemData(Slot.StaticDataID, ItemInfo))
{
UE_LOG(LogTemp, Warning, TEXT("UseItem failed: Invalid ItemData for ID=%d"), Slot.StaticDataID);
return;
}
if (ItemInfo.AbilityBP)
{
FGameplayAbilitySpec Spec(ItemInfo.AbilityBP, 1, 0);
ASC->GiveAbilityAndActivateOnce(Spec);
}
ํต์ฌ ๋์:
GiveAbilityAndActivateOnce() ์ฌ์ฉ์ผ๋ก Ability๋ฅผ ์ฆ์ ๋ถ์ฌํ๊ณ ํ์ฑํ1. ์๋ก์ด ์์ดํ ์ต๋ ์ ์คํ ๋ณํฉ
2. ๋ถํจ ์๋ฃ ์
3. ๋ถํจ๋ ๋งค๋์
GiveAbilityAndActivateOnce()๋ฅผ ์ฌ์ฉํ๋ฉด ์ผํ์ฑ ์์ดํ
์ฌ์ฉ ๋ก์ง์ ๊น๋ํ๊ฒ ์ฒ๋ฆฌํ๋ค. ๋งค๋ฒ Ability๋ฅผ ์๋์ผ๋ก ์ ๊ฑฐํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ์์ ํ๊ณ ํธ๋ฆฌํ๋ค.
๋ถํจ๋ ์์คํ ์ ๊ฒฝ์ฐ ํ๊ท ๊ฐ ๊ณ์ฐ ๋ฐฉ์์ด ๊ฒ์ ๋ฐธ๋ฐ์ค ์ธก๋ฉด์์ ๊ณต์ ํ์ง๋ ์ค์ ํ๋ ์ดํ ์คํธ๋ฅผ ํตํด ๊ฒ์ฆ์ด ํ์ํ ๊ฒ ๊ฐ๋ค. ๋ํ ์์ดํ ์ฌ์ฉ ์ ์ฟจ๋ค์ด์ด๋ ์ ๋๋ฉ์ด์ ์ฐ๋๋ ์ถ๊ฐ๋ก ๊ณ ๋ คํด๋ด์ผ๊ฒ ๋ค.