ย 



์˜›๋‚ ์— ์ด ์˜์ƒ์„ ๋ณด๊ณ  HUD์— ํ”Œ๋ ˆ์ด์–ด ์ •๋ณด๋ฅผ ํ‘œ๊ธฐํ•˜๋Š”๊ฑธ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ ์‚ฌ์†Œ?ํ•ด๋ณด์ด๋Š” ์ฐ๋น ๊ฐ€ ์žˆ์Œ


๋ฆฌ์ŠคํŠธ๋ฅผ ์—…๋ฐ์ดํŠธ ํ•˜๊ธฐ ์ „์— Delay๋ฅผ ๊ฑธ์–ด๋ฒ„๋ฆฌ๋Š”๊ฑด๋ฐ ์ด์—๋Š” ํฐ ์ด์œ ๊ฐ€ ์žˆ์Œ ์˜์ƒ์—์„œ๋„ ๋Œ€์ถฉ ์„ค๋ช…ํ•˜์ง€๋งŒ

ํ”Œ๋ ˆ์ด์–ด ์ •๋ณด๋ฅผ ์–ป์–ด์˜ฌ ๋•Œ GameState -> PlayerArray (์ด๋ฆ„์€ PlayerArray์ธ๋ฐ ์ •ํ™•ํžˆ๋Š” PlayerStateArray์ž„) ๋ฅผ ํ†ตํ•ด PlayerPawn ์„ ์ฐธ์กฐํ•ด์„œ ๊ฐ€์ ธ์˜ค๋Š”๋ฐ ๋ฌธ์ œ๋Š” PlayerState ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ณต์ œ๋˜๋Š” ์†๋„๊ฐ€ ๋А๋ฆฌ๋ฉฐ ๋žœ๋ค์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๊ฑธ ๋ฐฉ์ง€ํ•˜๊ณ ์ž ๋”œ๋ ˆ์ด๋ฅผ ๊ฑฐ๋Š”๊ฑฐ์ž„


๊ทผ๋ฐ ๋”œ๋ ˆ์ด๋ฅผ ๊ฑฐ๋Š” ํ–‰์œ„๋Š” ๊ฐœ๋ฐœํ•  ๋•Œ ๊ธฐํ”ผํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๊ฐ€ ํด๋ผ์ชฝ์ด ๋˜ฅ์ปด์ด๊ฑฐ๋‚˜ย ์ธํ„ฐ๋„ท ํ™˜๊ฒฝ์ด ์•ˆ์ข‹๋‹ค๋ฉด ์ €๋ ‡๊ฒŒ ํ•œ๋ฒˆ๋งŒ ํ˜ธ์ถœํ•˜๋Š” ์ด๋ฒคํŠธ์—์„œ ๋ณต์ œ๋œ ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•  ๋•Œ ์”นํžˆ๋Š” ํ˜„์ƒ์ด ์ƒ๊ฒจ๋ฒ„๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— Delay๋กœ๋Š” ํด๋ผ์ชฝ์ด ์˜จ์ „ํ•˜๋‹ค๋Š” ์‹ ํ˜ธ๋ฅผ ์บ์น˜ํ•  ์ˆ˜๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์ž„



์•„๋‹ˆ๋‚˜ ๋‹ค๋ฅผ๊นŒ ๋งค๋ฒˆ ๋А๋ฆฐ PlayerState ๋ณต์ œ๋กœ ์ธํ•ด ๋‚˜๋„ ์‹ฌ์‹ฌ์ฐฎ๊ฒŒ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ์—ˆ๋Š”๋ฐ ๋งค๋ฒˆ ๋ฏธ๋ฃจ๋‹ค๊ฐ€ ์˜ค๋Š˜ ๊ณ ์น˜๊ธฐ๋กœํ•จ



1. ํด๋ผ์˜ PlayerState ๋ณต์ œ ์‹œ์  ํ™•์ธํ•˜๊ธฐ


์–ธ์ œ๋‚˜ ๊ทธ๋ ‡๋“ฏ ์›ฌ๋งŒํ•œ๊ฑด ์—ํ”ฝ์—์„œ ๊ตฌํ˜„์„ ํ•ด๋†จ๊ธฐ์— ๋Œ€๋ถ€๋ถ„์€ ๋ณธ์ธ์ด ๊ตฌ์กฐ๋ฅผ ๋ชฐ๋ผ์„œ ์ƒ๊ธฐ๋Š” ๋ฌธ์ œ๋‹ค


7cf3c028e2f206a26d81f6e24f8274


APawn๊ณผ AController ํด๋ž˜์Šค์—๋Š” OnRep_PlayerState()๋ผ๊ณ  ์ด๋ฏธ ๋ณต์ œ ์‹œ์ ์„ ์•Œ๋ ค์ฃผ๋Š” Callback์ด ์žˆ๋‹ค. ์•ž์„œ ๋งํ•œ PlayerState์˜ ์ฐธ์กฐ๋ฅผ ์ด ๋•Œ ์ดํ›„๋กœ ์ง€์ •ํ•˜๋ฉด ๋ฌธ์ œ ์—†์„ ๊ฒƒ ๊ฐ™๋‹ค.



2. ๋กœ์ง ์‹คํ–‰ํ•˜๊ธฐ


7ff3c028e2f206a26d81f6ec428474

๊ตณ์ด ์ด๋ ‡๊ฒŒ ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ๋ฅผ ๋งŒ๋“ค์–ด์„œ ํ•  ํ•„์š” ์—†์—ˆ์ง€๋งŒ ๋ธ”ํ”„๋กœ ๋ณด๊ธฐ ํŽธํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ์ž„์‹œ๋กœ ๋งŒ๋“ค์—ˆ๋‹ค.



7ef3c028e2f206a26d81f6e64186706d

์ด๋ ‡๊ฒŒ ์ด๋ฒคํŠธ๋ฅผ ๋ฐ”์ธ๋”ฉํ•˜๊ณ  ๋‘๊ทผ๋‘๊ทผ ๊ฒฐ๊ณผ๋ฅผ ์ง€์ผœ๋ดค์ง€๋งŒ... ์—ฌ์ „ํžˆ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜๋‹ค.


์ž ์‹œ ํŒจ๋‹‰์— ๋น ์งˆ ๋ป” ํ–ˆ์ง€๋งŒ ๋„์ฐฉ์ง€์ ์ด ๊ฑฐ์˜ ๋‹ค ์™”๊ธฐ ๋•Œ๋ฌธ์— ์ ˆ๋งํ•  ์ˆ˜๋Š” ์—†์—ˆ๋‹ค.




3. ๋””๋ฒ„๊น…


์˜จ๊ฐ– ๊ณณ์— ๋””๋ฒ„๊ทธ๋ฅผ ์ฐ์–ด๋ดค๋Š”๋ฐ ํ™•์‹คํ•œ๊ฑด GameState๋„ ๋ฌด๋ฆฌ์—†์ด ์บ์ŠคํŒ… ๋˜๊ณ , PlayerArray๋„ ๋ชจ๋‘ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์•ˆ๋์œผ๋ฉด ๊ธ€๋„ ๋ชป ์ผ๊ฒ ์ง€๋งŒ ใ…‹ใ…‹ใ…‹


๋”ฑ ํ•œ ๊ณณ ์ฐธ์กฐ๊ฐ€ ์™„๋ฒฝํ•˜์ง€ ์•Š๋Š” ๋ถ€๋ถ„์ด ํ•˜๋‚˜ ์žˆ๋”๋ผ



79f3c028e2f206a26d81f6e047857265

30

Pawn Private <------ ์ด์ƒˆ๋ผ




78f3c028e2f206a26d81f6e44089746c


7bf3c028e2f206a26d81f6e645837068


์ด์ƒˆ๋ผ๋Š” OnRep_PlayerStateย ์ฝœ ํ•  ๋•Œ SetPlayerState๋ฅผ ํ†ตํ•ด PlayerState์— ์„ ์–ธ๋˜์–ด ์žˆ๋Š” FSetPlayerStatePawn ์œผ๋กœ Set ํ•ด์ฃผ๋Š” ์ƒˆ๋ผ์ธ๋ฐ

๊ตฌ์กฐ๋งŒ ๋ด๋„ PlayerState -> Pawn -> PlayerState ์ด์ง€๋ž„ ์™”๋‹ค๊ฐ”๋‹ค ํ•ด์„œ ๊ทธ๋Ÿฐ์ง€ ๋ชฐ๋ผ๋„ ๋ณต์ œ๊ฐ€ ๋’ค์ง€๊ฒŒ ๋Šฆ๊ฒŒ๋œ๋‹ค


์–˜๋Š” ์ด๊ฑฐ ๋ง๊ณ  ๋” ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด๊ฐ€ ๋ญ ํ•  ์ˆ˜ ์žˆ๋Š”๊ฒŒ ์—†๋”๋ผ




4. ๊ฒฐ๋ก 


7af3c028e2f206a26d81f6e14380776b


๋‚ด๊ฐ€ ์ œ๋Œ€๋กœ ์ดํ•ดํ–ˆ๋‹ค๋ฉด ๊ตฌ์กฐ์ƒ PlayerState๋Š” ๋ฉ€์ฉกํžˆ ์กด์žฌํ•˜๊ณ ย ์ฝ”๋“œ ์‹คํ–‰์ด ๋А๋ฆฐ๊ฑฐ๋ผ AddItem ํ•˜๊ธฐ ์ „์— ๋”œ๋ ˆ์ด ๋„ฃ์–ด์คฌ๋‹ค

๋”œ๋ ˆ์ด ๋„ฃ๋Š”๊ฒŒ ์‹ซ์–ด์„œ ์‹œ์ž‘ํ•œ๊ฑด๋ฐ ์ด๊ฑฐ๋ณด๋‹ค ๋” ๋‚˜์€ ๋ฐฉ๋ฒ•์ด ์ƒ๊ฐ ์•ˆ๋‚œ๋‹ค



ํ•œ์ค„ ์š”์•ฝ - ๋ฉ€ํ‹ฐ๋Š” ๊ฑฐ์ง€๊ฐ™๋‹ค

49