
| PlayerController | ActorComponent | GameModeSetting |
|---|---|---|
![]() | ![]() | ![]() |

WBP_ChatBox, WBP_ChatEntry, WBP_ChatUI๋ฅผ ํ์ฉํ๋ค.

Enter ํค ๋ฑ์ ์ด๋ฒคํธ๋ก ๋ฉ์ธ์ง๋ฅผ ์ ์กํ๊ฒ ๋ง๋ฆ.
Set User Focus
Set Is Enabled
ํ์ฑํ ๋๋ฉด Chat Focused (Bool Variable) True ๋ก ์ค์ .
๐ ์ธ๋ถ์์ Focus Chat ํจ์๊ฐ Called ๋๋ฉด ์คํ๋๋ ๋ก์ง (Enter Key Pressed) Focus, Enable ์ค์

Chat Focused (Bool Variable) False ๋ก ์ค์
SetText๋ฅผ ํ์ฉํ์ฌ ์ ๋ ฅ์นธ ๋น์ฐ๊ธฐ.
Set Is Enabled ๋นํ์ฑํ
Set Input Mode Game Only ๋ฅผ ์ด์ฉํ์ฌ ์ ๋ ฅ์ด ์๋ฃ๋๋ฉด Focus๋ฅผ ๋๊ณ ๊ฒ์ ๋ชจ๋๋ก ์ ํ
๐ ์ธ๋ถ์์ Exit Chat ํจ์๊ฐ Called ๋๋ฉด ์คํ๋๋ ๋ก์ง. Focus Chat๊ณผ ๋ฐ๋.

Scroll ์ Input(๋งค๊ฐ๋ณ์)๋ก Up(Bool Variable)๋ฅผ ์ถ๊ฐํ๋ค.
Select Float์ ํตํด Up์ด True ๋ฉด A๋ฅผ Excute / Up์ด False๋ฉด B๋ฅผ Excute
๐ ๋ง์ฐ์ค ์คํฌ๋กค์ ํ ๋ Scroll ํจ์๋ฅผ ํธ์ถํ์ฌ์ Set Scroll Offset๋ฅผ ํตํด Scroll์ ์์น๋ฅผ ์ ํ

AddChatMessage (Custom Event)
Create Widget (WBP_ChatEntry)
Add Child (Target: Scroll Box)
Scroll to End
๐ ๋ฌธ์์ด(Message)์ ๋ฐ์์ โ ์ฑํ ๋ฉ์์ง ์์ ฏ์ ์์ฑํ๊ณ โ Scroll Box์ ์ถ๊ฐํ๊ณ โ ์๋์ผ๋ก ๋งจ ์๋๋ก ์คํฌ๋กคํด์ ์ต์ ๋ฉ์์ง๊ฐ ๋ณด์ด๋๋ก ํจ.


OnTextCommitted (EditableText_151)
Commit ๋์ ๋ ์คํBranch 1
๋ง์ฝ ์ฑํ ์ด ๋น์์ ๊ฒฝ์ฐ (Is Empty == True)
์ฑํ ์ด ์๋ ๊ฒฝ์ฐ (Is Empty == false)
๐ ์ฑํ ์ ๋ ฅ ์ Enter๋ก Commit, ์ฑํ ์ด ๋น๋ฉด Exit Chat ํธ์ถ, ๊ทธ๋ ์ง ์์ผ๋ฉด ActorComponent Send Chat Message on Server ํธ์ถ


Event Construct
NativeConstruct() ํจ์Message

๐ ChatEntry Widget์ด ์์ฑ๋๋ฉด Message ๊ฐ์ ๋ฐ์์ TextBlock์ SetText ํด๋ผ๋ ์๋ฏธ.

์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง๋ ์ ์ฒด UI๋ฅผ ๋ด๋น
Overlay
WBP_ChatBox

GetOwner() ์ ๋ฐํ ํ์
์ AActor* ์ด๋ฏ๋ก PlayerController๋ก Castingํ๋ ๊ณผ์ ์ด ํ์ํ๋ค.
Is Local Player Controller๋ฅผ ํตํด์ Clients์๊ฒ๋ง Branch์ True๋ก์ง์ด Excute ๋๋๋ก ํจ.
Client๊ฐ True๋ผ๋ฉด WBP_ChatUI ์์ฑ ํ ๋ณ์๋ก Promote
Viewport์ ํ์ํ๊ณ ChatUI์ ๊ตฌ์ฑ์์์ธ WBP_ChatBox Instance๋ฅผ ๊ฐ์ ธ์์ ๋ณ์๋ก Promote

์์ WBP_ChatBox์ Function๋ค์ ์ ๋ ฅ(Input)๊ณผ ๋ฐ์ธ๋ฉ


SendChatMessageOnServer
Get Game State
For Each Loop
Add Chat Message on Owning Client
ํด๋ผ์ด์ธํธ๊ฐ SendChatMessageOnServer(Message) ํธ์ถ
์๋ฒ์์ ๋ชจ๋ PlayerState ์ํ
๊ฐ ํ๋ ์ด์ด์ PlayerController๋ฅผ ๊ฐ์ ธ์ด
ํด๋น ์ปจํธ๋กค๋ฌ์ ๋ถ์ AC_Chat_PC ์ปดํฌ๋ํธ ํ๋
๊ทธ ์ปดํฌ๋ํธ์ AddChatMessageOnOwningClient(Message) ํธ์ถ
โ ๊ฐ ํด๋ผ์ด์ธํธ์์ ์ฑํ ๋ฉ์์ง๊ฐ ๋ธ

AddChatMessageonOwningClient
Add Chat Message
์๋ฒ์์ ์ ๋ฌ๋ฐ์ Message๋ฅผ
Chat Box Ref๋ก ์ฐธ์กฐ๋ UI์ ๋๊ฒจ์ฃผ๊ณ
Add Chat Message ํจ์ ํธ์ถ โ ์ฑํ ๋ฉ์์ง๊ฐ ํ๋ฉด์ ์ถ๋ ฅ๋จ
์ฐ๋ฆฌ๊ฐ ๊ฒ์์ ํ๋ฉด ํํ ๋ณผ ์ ์๋ ์คํฌ๋กค์ฑํ ์์คํ ์ ๋ง๋๋ ๊ฒ๋ ์ฝ์ง ์์๋ค. AActor์ ํ์ AInfo์ GameFrameWork์ ๊ฐ๋ ์ด ์ด์ ๋ ์ต์ํ์ง๋ง ๊ฐ๋์ ํท๊ฐ๋ ค์ ๋ค์ ์ฐพ์๋ณด๊ณค ํ๋๋ฐ ํ์คํ ๊ฐ๋ ์ ์ง๊ณ ๋์ด๊ฐ์ผ ๊ฒ ๋ค๋ ์๊ฐ์ ํ๋ค.
๊ทธ๋ฆฌ๊ณ ์ด์ ์ ๋ง๋ค์๋ GunfireParagon Project์์ UI๋ฅผ ๋ด๋นํ์ง ์์์ ์ต์์น ์์ ๊ฐ๋ ๋ค์ด ๋ง์๋๋ฐ ์ด๋ฒ ๊ธฐํ์ ์ ๋ฆฌ๊ฐ ๋ ๊ฒ ๊ฐ์์ ์ข์๋ค.