๐
2025-11-17
์ธ๋ฆฌ์ผ ์์ง์ ๋ง์ฐ์ค ์ด๋ฒคํธ๋ ๋ ๋จ๊ณ๋ก ์ฒ๋ฆฌ๋๋ค:
OnPreviewMouseButtonDown
- ๋ถ๋ชจ โ ์์ ๋ฐฉํฅ์ผ๋ก ์ ํ โฌ๏ธ
- ์๋ณธ ์ด๋ฒคํธ ์ ๋ณด๋ฅผ ๊ทธ๋๋ก ๋ฐ์
- Get Effecting Button์ด ์ ํํ๊ฒ ๋์ํจ
OnMouseButtonDown
- ์์ โ ๋ถ๋ชจ ๋ฐฉํฅ์ผ๋ก ์ ํ โฌ๏ธ
- ์์ ์์ ฏ์ด ์ด๋ฒคํธ๋ฅผ ๋จผ์ ์ฒ๋ฆฌ
- ์ด๋ฒคํธ ์ ๋ณด๊ฐ ๋ณํ๋๊ฑฐ๋ ์์๋ ์ ์์
Button (๋๋ Canvas Panel)
โโ Image
โโ TextBlock
๊ฒฐ๋ก : ๋๋๊ทธ์ค๋๋กญ ๊ตฌํ ์ OnPreviewMouseButtonDown์ ์ฌ์ฉํด์ผ ํ๋ค. ์์ ฏ ํ์ (Button, Canvas Panel ๋ฑ)๊ณผ ๋ฌด๊ดํ๊ฒ ์์ ์์ ฏ์ด ์์ผ๋ฉด Preview๋ฅผ ์จ์ผ ํ๋ค.
OnMouseButtonDown์ ๋ฐํ๊ฐ(true/false)์ด
โ OnDragDetected๋ OnDrop์ผ๋ก ์ ๋ฌ๋๋ค๊ณ ์๊ฐ
โ ์ ๋ฌ๋์ง ์๋๋ค! ๊ฐ ์ด๋ฒคํธ์ FPointerEvent ํ๋ผ๋ฏธํฐ์์ ๋ ๋ฆฝ์ ์ผ๋ก ํ์ธํด์ผ ํจ.
OnPreviewMouseButtonDown:
Mouse Event โ Get Effecting Button
โ Set CachedMouseButton (์์ ฏ ๋ณ์์ ์ ์ฅ)
โ Branch (Left or Right?)
True: Detect Drag ๋ฐํ
False: Unhandled ๋ฐํ
OnDragDetected:
CachedMouseButton ์ฌ์ฉ
โ Branch (Left?)
True:
- bIsFullStack = true
- TransferQuantity = CurrentStackSize
False:
- bIsFullStack = false
- TransferQuantity = 1
โ DragOperation ์์ฑ ๋ฐ ๋ฐํ
OnDrop:
DragOperation โ bIsFullStack ์ฝ๊ธฐ
โ ServerTransferItem(..., bIsFullStack)
๋ฒํผ ํ์ธ์ ํ ๋ฒ๋ง, ์ ์ฅํด์ ์ฌ์ฌ์ฉ
UCLASS()
class UMyDragDropOperation : public UDragDropOperation
{
UPROPERTY(BlueprintReadWrite)
bool bIsFullStack;
UPROPERTY(BlueprintReadWrite)
int32 TransferQuantity;
};
OnPreviewMouseButtonDown (๋ฒํผ ํ์ธ ๋ฐ ์บ์ฑ)
โ
OnDragDetected (DragOperation์ ๋ฐ์ดํฐ ์ ์ฅ)
โ
OnDrop (์ ์ฅ๋ ๋ฐ์ดํฐ ์ฌ์ฉ)
OnDragDetected์ Pointer Event์์ Get Effecting Button โ None ๋ฐํ
์ธ๋ฆฌ์ผ์ ์ด๋ฒคํธ ์์คํ ์ด ์๊ฐ๋ณด๋ค ๋ณต์กํ๋ค๋ ๊ฑธ ๊นจ๋ฌ์๋ค. ์ฒ์์๋ ๋จ์ํ OnMouseButtonDown์์ ๋ฐํ๊ฐ์ ์กฐ์ํ๋ฉด ๋๋ ์ค ์์๋๋ฐ, ์ค์ ๋ก๋:
์ด ๋ชจ๋ ๊ฒ์ ์ดํดํด์ผ ์ ๋๋ก ๋์์ํฌ ์ ์์๋ค.
ํนํ OnPreviewMouseButtonDown์ ์กด์ฌ๋ฅผ ๋ชฐ๋๋ค๋ฉด ๊ณ์ ์ฝ์งํ์ ๊ฒ ๊ฐ๋ค. ์์ ฏ ์์ Image๋ TextBlock ๊ฐ์ ์์ ์์ ฏ์ด ์์ผ๋ฉด ์ด๋ค์ด ์ด๋ฒคํธ๋ฅผ ๋จผ์ ๋ฐ์์ ๋ฒํผ ์ ๋ณด๋ฅผ ๋ง๊ฐ๋จ๋ฆฐ๋ค๋ ๊ฒ๋ ์ง์ ๊ฒช์ง ์์์ผ๋ฉด ์์๋ ๋ชปํ์ ๋ฌธ์ ๋ค.
๊ฒฐ๊ตญ ํ๋ ์์ํฌ์ ๋ด๋ถ ๋์ ์๋ฆฌ๋ฅผ ์ดํดํ๋ ๊ฒ์ด ์ค์ํ๋ค๋ ๊ฑธ ๋ค์ ํ๋ฒ ๋ฐฐ์ ๋ค. ํ๋ฉด์ ์ธ ์ฌ์ฉ๋ฒ๋ง ์๋ ๊ฒ๊ณผ ๋ด๋ถ ๋ฉ์ปค๋์ฆ์ ์ดํดํ๋ ๊ฒ์ ์ฐจ์ด๋ฅผ ์ฒด๊ฐํ๋ค.