ํ์ฌ ์ฝ๋๋ ๋์ถฉ ์ด๋ ๊ณ ํ ํ๋ฆฟ ์ด์ฉํด์ StateEnum์ด๋ผ๋ enum ํ์ ์ ๋ฐ์์ค๊ณ , ๊ทธ๊ฑธ ํตํด์ FSM์ ๊ตฌํํ๋ ๋ฐฉ์์
๊ทธ๋ฐ๋ฐ ์ปดํ์ผ ์ค๋ฅ๊ฐ ๋์ ํ์ธํด๋ณด๋ UObject๋ฅผ ์์๋ฐ์ผ๋ฉด์ UClass๋ก ์ง์ ๋์ด์์ง ์์ผ๋ฉด ๋ธ๋ฆฌ๊ฒ์ดํธ๋ฅผ ์ฌ์ฉํ ์ ์๋ค๊ณ ๊ทธ๋ฌ๋ค
๊ทธ๋ฆฌ๊ณ ํ ํ๋ฆฟ์ ์ฌ์ฉํ๋ฉด UClass๋ก ์ง์ ํ ์๊ฐ ์๊ณ ...
๊ทธ๊ฒ๋ ๋ชจ๋ฅด๊ณ ์บ๋ฆญํฐ ์์ง์์ FSM์ ์์กดํ๋๋ก ์ด๋ฏธ ๋ก์ง ๋ค ์ง๋ฒ๋ฆผ
์ด๊ฑธ ์ด์ผ ๋ฐ๊ฟ์ผ ์ํ๋๋๋ก ์ธ ์ ์์๊น...
TStateMachine<EMovementState> StateMachine ์ด๋ฐ์์ผ๋ก ์ฐ๊ณ ์ถ์๋ฐ
๋ธ๋ฆฌ๊ฒ์ดํธ ๋ง๊ณ ํจ์ํฌ์ธํฐ ์ฐ๋ ๋ฐฉ์์ผ๋ก ๋ฐ๊ฟ์ค์ผํ๋;
ํ ํ๋ฆฟ ์์ฐ๊ณ UObject๋ก ํด๋์ค ๋ค์ ๋ง๋ค์ด์ผ์ง ๋ญ
๊ทธ๋ผ ์์ ์ธ๋ฆฌ์ผ์์๋ ์ ๋ค๋ฆญํ๊ฒ ๋ชป์? ์ผ์ผํ Enum๋ง๋ค ๋ฐ๋ก ๋ง๋ค์ด์ค์ผํ๋
์กด๋ ๋ถํธํ๋ค... ์ฝ๋ ์ฌ์ฌ์ฉ ์ด์ผํ๋ผ๊ณ ์ด๋ ๊ฒ ๋ง๋ค์ด๋จ์ง
StateEnum์ด ์ด๋ค ๊ตฌ์กฐ์ธ์ง ๋ชจ๋ฅด๊ฒ ๋๋ฐ, ๊ทธ๋ฅ StateEnum ํ์ํ ๊ฑฐ ๋ง๋ค์ง ๋ง๊ณ ํต์งธ๋ก ์ด๋ค ์๊ฐํ๊ณ ๋ง๋๋๊ฒ ๋ซ์ง ์๋ ์ถ์๋ฐ.. UObject๋ก ์๋ง๋ค๋ฉด ์๋ํฐ์์ ๋ ธ์ถ ์๋์ ์ด์ฐจํผ ์ฌ์ฉํ๊ธฐ ๊ท์ฐฎ์.
StateEnum์ ํ์ํด๋์ค๋ฅผ ๋ง๋ค์ด ์ฐ๋ ค๋๊ฒ ์๋๋ผ ์ํ ๋จธ์ ์ ์ ๋ค๋ฆญํ๊ฒ ๋ง๋ค์ด์ ๊ฐ๋จํ๊ฒ StateEnum ํ์ ์ ๋ฐ๊ฟ๊ฐ๋ฉฐ ์ฌ์ฉํ ์ ์๊ฒ ๋ง๋๋ ค๊ณ ํ๊ฑฐ์
StateEnum์ ์๋ฅผ ๋ค๋ฉด Move, Sprint, Crouch ์ด๋ฐ ์์ผ๋ก ์ํ๊ฐ ์ ์๋์ด์๋ enum์
? ๊ทธ๊ฑฐ ํ ํ๋ฆฟ์ด ํ์ํจ?
๊ทธ๊ฑฐ ๊ทธ๋ฅ enum ํด๋์ค ์ ์ธํด์ ํด๋์ค ๋ณ์ ๋ง๋ค๊ณ ๊ทธ ๋ณ์ ๊ฐ๋ง ๋ณ๊ฒฝํด์ ๋๋ฆฌ๋ฉด ๋๋๊ฑฐ ์๋?
ํ์ฌ ์ํ๋ฅผ ํ ํ๋ฆฟ์ผ๋ก ๋ฐ์ enum ํ์ ์ผ๋ก ์ ์ํด์ค์ผํด์ ํ์ํจ...
๊ทธ๋ ๊ฒ ํ๋์ฝ๋ฉ ํ ์๋ ์๋๋ฐ ์ ๋ค๋ฆญํ๊ฒ ๋ชปํ์์ ํ์ ๋ฐ๊ฟ๊ฐ๋ฉด์
๋ด ์ด์ผ๊ธฐ๋, ๊ทธ enum์ ์ ๋ ๋ํ๊ฒ ์จ์ผํ๋ ํน๋ณํ ์ด์ ๊ฐ ์๋๋ผ๋ ๋ป์
๊ทธ๊ฑฐ์ผ ์ฝ๋ฉ ํธํ๊ฒ ํ๋ ค๊ณ ๊ทธ๋ ์ง... ์ํ๋จธ์ ํ๋ฒ ๋ง๋ค์ด๋๊ณ ๋์ค์ ์ฌ์ฌ์ฉํ ์ ์์ผ๋ฉด ์ข์์
๊ทธ๊ฒ ์ ๋ค๋ฆญ ํ๋ก๊ทธ๋๋ฐํ๋ ํต์ฌ ์ด์ ์ธ๋ฐ
์๋ก ์ ์ธ ๋ถ๋ถ์ ๋ฌผ์ด๋ณธ ๊ฑด ์๋์ง๋ง, ๋ณธ์ธ์ด ํ ํ๋ฆฟ ์จ์ผํ ๋ก์ง์ด๋ฉด ์ด์ ๊ฐ ์๋๊ฑฐ๊ฒ ์ง. ๋ตํด์ค ์ ์๋ ๋ถ๋ถ์, ์ธ๋ฆฌ์ผ ๊ด๋ จ ํด๋์ค๋ ํ ํ๋ฆฟ ํด๋์ค๋ก ๋ชป๋ง๋ฌ. ํ ํ๋ฆฟ ํด๋์ค ๋ง๋ค๋ ค๋ฉด ์์ C++๋ก ๋ง๋ค์ด์ผํจ. ๊ทธ ์์ C++๋ก ๋ง๋ ํ ํ๋ฆฟ ํด๋์ค ์์ ์ธ๋ฆฌ์ผ ๊ด๋ จ ํด๋์ค๋ค์ ์ฐ๋ฉด ์๋จ. ๋๋ ์์ ์ ํ ํ๋ฆฟ ํด๋์ค ๋ง๋ค๋ค๊ฐ ๋ฒ๊ทธ ์์ฒญ ๋ง๊ธฐ๋ ํ๊ณ , ์๊ฐํด๋ณด๋๊น ๋ฑํ ํ ํ๋ฆฟ์ผ๋ก ๊ตฌํํด์ผํ ์ ๋๋ก ๋ฒ์ฉ์ฑ ์๊ฒ ๋ง๋ค ํ์๊ฐ ์๊ธดํด์ ํฌ๊ธฐํ์. ๊ณ์ ํด๋ณผ ์๊ฐ์ด๋ฉด ์ ๋๊ธธ ๋น๊ณ , ๋๋ ๊ฐ์ธ์ ์ผ๋ก๋ UObject๋ก ๋ง๋ค์ด์ ๋์์ ๋๋ ์์ผ๋ก ๋ง๋ค์ด๋ณด๋๊ฑธ ์ถ์ฒํจ
stateEnum ์ด๋ผ๋ ๋ณ์๊ฐ ๋ฐํ๋๋ฐ ์ด๋ฏธ Generic ํ์ง ์์๋ฐ ๊ตณ์ด tmp๋ฅผ ๊ณ ์งํ ํ์๊ฐ?
StateEnum์ด ํ ํ๋ฆฟ์ผ๋ก ๋ฐ๋ ํ์ ์ธ๋ฐ ๋ค์ ์ฝ์ด๋ณด์ ...
ใ ใ ๋ด๋ถ์ด๋ป๊ฒ ์งฐ๋์ง๋ ๋ชจ๋ฅด๊ฒ ์ด์ ๋๊ธ ์จ๋์๊ฑฐ๋ณด๋ฉด 'move, sprint, crouch ์ ๋ฆฌ๋์ด์๋ enum' ์ด๋ผ๊ณ ํ๋๋ฐ typeid ๊ฐ ๊ฒฐ๊ตญ์ enum ์๋ง ๋์ํ๋๊ฑฐ ์๋? ๋ค๋ฅธ ๋ฐ์ดํฐํ์ ์ ๋์ํ๋๊ฒ ์๋๊ฑฐ๊ฐ์๋ฐ ์ ๋๋ฆญ์ผ๋ก ํ ํ์๊ฐ ์๋ ๋ฌผ์ด๋ณธ๊ฑฐ์ง explict ๋ก ํด๋์ค ์์ฑ์์์ ์ด๋ค์์ ์ ํ๋์ง ๋ชจ๋ฅด๊ฒ ๋๋ฐ uobject ํ์์ผ๋ก ๋ง๋ค๊ณ template function ์ผ๋ก ๋๋ฆฌ๋ฉด ์๋๋๋ถ๋ถ์??
enum์๋ง ๋์ํ๋๊ฑด ๋ง๋๋ฐ enum์ด ๋ฌด์จ ํด๋์ค ์์ํ์ ์ด๋ผ enum ํ์ํ์ ๋ง ๋ฐ๋๋ค ์ด๋ฐ์์ผ๋ก ํ๋ ๋ฐฉ๋ฒ์ด ์๋๊ฒ ์๋์์
๊ทธ๋ฐ ๋ฐฉ๋ฒ ์์ผ๋ฉด ์๋ ค์คฌ์ผ๋ฉด ์ข๊ฒ ์
๊ทธ๋ฆฌ๊ณ ๋ด๋ถ์ Enum ํ์ ์ผ๋ก CurrentState๋ฅผ ์ ์ฅํด๋๊ธฐ ๋๋ฌธ์ ํ ํ๋ฆฟ ํจ์๋ง์ผ๋ก๋ ์๋จ
explicit ํด๋์๊ฑด ๊ทธ๋ฅ int๊ฐ์๊ฑฐ ์์์ ๋ณํ์ผ๋ก ๋ฐ์ง ๋ง๋ผ๊ณ ๊ทธ๋ฅ ํด๋์๊ฑฐ์... ๋ฑํ ์ ๊ฑธ๋ก ๋ญ ํ๋๊ฑด ์์
์ธ๋ฆฌ์ผ ๋ธ๋ฆฌ๊ฒ์ดํธ ๋ง๊ณ GameplayMessage subsystem ์จ๋ณด์