ํ ํด๋์ค(Target์ด๋ผ๊ณ ํ์) ๋ด์์ ์ ๋ค๋ฆญํ ํด๋์ค์ธ State๋ค์ ์ฌ๋ฌ๊ฐ ๊ฐ๊ณ ์๊ณ
์ด State๋ฅผ ๋ฐ๊ฟ์ค๋๋ง๋ค State๋ณ๋ก ๊ฐ๊ฐ State ์ฒซ ์์์์ ํ์ํ ์ ๋ณด๋ค์ ๊ฐ์ถฐ์ค์ผํจ
์ด๊ฑธ Setupํจ์๋ฅผ State๋ณ๋ก ๊ฐ๊ณ ์๋๋ฐ ์ด๋ ๊ฐ๊ฐ ํ์ํ ์ ๋ณด๋ค์ด ๋ค๋ฆ.
์ด๋ Setupํจ์ ์ธ์๋ก Target์ ์ฃผ๊ณ Target์์ Getํจ์๋ค์ ์ด์ฉํด์ ํ์ํ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์์ State๋ค์๊ฒ ๋ฃ์ด์ฃผ๋ ๋ฐฉ๋ฒ์ ์๊ฐํ๋๋ฐ ์ด๋ ๊ฒ์ง์๋
Target ํจ์๋ด์์ ๊ทธ๋ฅ Get~ ์ด์ฉ๊ณ ํ๋ฉด์ ์ ๋ณด๋ง ๊บผ๋ด์ฃผ๋ ํจ์๋งย ๋์ด๋์ ๋ณ๋ก๋ค ์ถ์๋ฐย ์ด๋ป๊ฒ ํด์ค์ผํ ๊น์?
ย ย public override Action<A, B, C> SetUP<A, B, C>()
ย ย {
ย ย ย ย Action<A, B, C> setupCallback = (girl, girlmoveController, targetTr) =>
ย ย ย ย ย {
ย ย ย ย ย ย ย m_girl = girl as Girl;
ย ย ย ย ย ย ย m_girlMoveController = girlmoveController as GirlMoveController;
ย ย ย ย ย ย ย m_targetTr = targetTr as Transform;
ย ย ย ย ย };
ย ย ย ย return setupCallback;
ย ย }
์ด๋ฐ์์ผ๋ก callackํจ์ ๋ฆฌํด ํด์ Target ํด๋์์์ ์ง์ ๋ณ์ ๋ฃ์ด์ฃผ๋ ์์ผ๋ก ์งฏ๋๋ฐ ์ด๊ฑด ๋ณ๋ก์ผ๊น์?
๊ฑ State๋ฅผ ์์ํด์ ๋ง๋ค๋ฉด ์๋จ?
์์ํ๋๋ฐ ๋งํ๋ฏ์ด ํ์ํ ์ ๋ณด๊ฐ ๊ณ์ ๋ฌ๋ผ์ ใ ใ
State๊ฐ ๋ฌด์จ ์ญํ ์ ํ๋์ง ๋ชจ๋ฅด๊ฒ ๋๋ฐ....(์์คํ ์ ์ผ๋ก ์ฐ์ด๋ ์ํ๊ฐ ํด๋์ค์ธ์ง, ์๋๋ฉด ์ธ๊ฒ์์์ ์บ๋ฆญํฐ ์ํ๋ก ์ฐ์ด๋ ๊ฒ์ธ์ง...) Target์ ์๋ฏธ๋ ๋ถ๋ถ๋ช ํด์ ์์งํ ๋ญ ์ด๋ป๊ฒ ๋ง๋๋ ค๋ ๊ฑด์ง ๋ชฐ๊ฒ ์.
ํนํ ์ง๋ฌธ์ ๋ด์ฉ์ด ์ธ๋ถ์ ์ธ ๊ตฌํ ๋ฐฉ๋ฒ์ ๋ฌป๊ณ ์๋๋ฐ, ํ๋ค๋ชปํด State ์ ๊ทธ ํ์ ํด๋์ค๋ค์ ์ ๋ณด๊ฐ ๋ญ๊ฐ ๋ค์ด ์๋์ง ํด๋์ค ๋ค์ด์ด๊ทธ๋จ์ ๊ทธ๋ ค์์ผ ์ํ๋ ๋๋ต์ ๋ค์ ์ ์์ง ์์๊น? ์ผ๋จ ๋ญ๊ฐ ์ ๋ค๋ฆญ ์จ์ ๋ฒ์ฉ์ ์ผ๋ก ๊ฐ๋ฐํ๊ณ ์ถ์ ๊ฑด ์๊ฒ ๋๋ฐ, State๋ณ๋ก ํจ์๋ฅผ ์ง๋๊ฑด ์์ ์๋๋ผ๊ณ ๋ด.
์ผ๋จ ๋ฒ์ฉ์ ์ธ RPG์ ์บ๋ฆญํฐ ์ํ๊ฐ์ ์๋ฏธํ๋ ๊ฑฐ๋ผ๊ณ ๊ฐ์ ํ๋ค๋ฉด State interface๋ฅผ ๋จผ์ ์ ์ํ๊ณ , ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก abstract class์ธ StateBase๋ฅผ ๊ตฌํ. State์ ์์น๊ฐ ์ธ๊ฒ์์์ ์ ์ฉ๋๋ ์์ ์ ๋ฐ๋ผ enum StateType๋ฅผ ์ ์. Character ๋ํ, interface๋ฅผ ๋จผ์ ๊ตฌํํ๊ณ , ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก abstract class์ธ CharacterBase๋ฅผ ๊ตฌํ. ๊ณตํต๋ก์ง์ CharacterBase์์ ๊ตฌํํ๋, ์์ ์ด ๋ ์ ์๋ ๋ก์ง์ virtual ํจ์๋ก ๊ตฌํํ๊ณ ๊ทธ์ธ ์์๋ฐ์ ํด๋์ค์์ ๊ฐ๊ฐ ๊ตฌํํด์ผ ํ๋ ๊ฒ๋ค์ abstract ํจ์๋ก ๊ตฌํ. ๊ทธ๋ฆฌ๊ณ StateType์ ๋ฐ๋ผ์ ์ ์ฉ๋ ๋ถ๋ถ์ ๋ง์ถ์ด ๊ณตํต๋ก์ง ํจ์๋ฅผ ๊ตฌํ
๊ฐ๊ฐ์ State์ ๋ฐ๋ผ SetUp์ ํ์ํ ํ๋ผ๋ฏธํฐ๋ค์ด ๋ค๋ฅด๋ค๋ฉด, ๋ฐ์ดํฐ ์ ๋ฌ์ฉ struct๋ฅผ ๋ง๋ค๊ณ , struct ๋ด๋ถ ๋ณ์๋ฅผ ์ ๊ทผํ๊ธฐ ์ฝ๊ฒ public์ผ๋ก ๋ง๋ค์ด์ setup(CharaInfo info) ์ด๋ฐ์์ผ๋ก ๋์ง๋ ๊ฒ๋ ํ๋์ ๋ฐฉ๋ฒ์.
๊ทผ๋ฐ ์ฌ๊ธฐ์ ํ๊ฐ์ง ์ฃผ์ํ ๊ฒ ์๋๊ฒ MoveController๊ฐ ์ ์๋์ด ์๋๋ฐ MoveState์ ํ์ํ ํ๋ผ๋ฏธํฐ(๋ชฉ์ ์ง)๋ฑ์ ๋๊ธฐ๋ ์ด์ ๊ฐ ๋ญ์? ์ด๋ ๋ช ๋ น์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๊ฑฐ๋ผ๋ฉด, State์๋ ๋ณ๊ฐ์ ActionQueue๋ฅผ ๋ง๋ค๊ณ , Action insterface์ ActionBase, MoveAction ์์ผ๋ก ๋ง๋ค์ด Queue์์ ๊ด๋ฆฌํ๋๊ฒ ๋ซ๋ค๊ณ ๋ด.
๋๋ ๊ทธ๋ฐ ๋ฐฉ์ ์๊ฐํด๋ดค๋๋ฐ ์ ์๋๋๋ผ๊ณ ์ง์์ด ๋ถ์กฑํด์. ๊ทธ๋์ SetupInfo๋ผ๋ ๋ฒ ์ด์ค ํด๋์ค๋ฅผ ์ ์ํ๊ณ , ํ์ฅ์ด ํ์ํ State๋ค์ ๊ทธ ๋ฒ ์ด์ค ํด๋์ค๋ฅผ ์์ํ์ฌ AttackSetupInfo ํด๋์ค๋ฅผ ์ ์ํ๊ณ AttackState์ SetUp๋ฉ์๋๋ ์์ ๊ฐ์ฒด๋ฅผ ๋๊ฒจ๋ฐ์์ ์ด๊ธฐํํ๋ ์์ผ๋ก ๊ตฌํํจ.
์ด์ ์์ ์ ๋ชปํด์ ๋ฆ๊ฒ๋ดค๋ค์ ๋ต๋ณ๋ค ๊ฐ์ฌํฉ๋๋ค
https://developer.android.com/topic/libraries/architecture/lifecycle?hl=ko
156๋ ๋ง์ด ์ ์ ์ผ๋ก ์ณ์
์ํ๋ ๊ฐ์ผ๋ก ์ ์ํ๊ณ ์ํ์ ๋ณํ์ ๋ฐ์ดํฐ๋ก ์ ์ํ๊ณ
์ ํํ๋ ๋ฐ์ดํฐ์ ์ํ ๋ถ๊ธฐ
๊ทธ๋ค์ ๊ตฌ๋ ์ ํจํด์ ์ธํฐํ์ด์ค ์ ์ ํ
๊ฒ์์ ์ํ์ ์ข ์๋๋ ๋ชจ๋ ์์๋ ๊ตฌ๋ ์ ํจํด์ ์กํฐ๋ฒ ์ด์ ์ฌ๋ถ๋ก ๊ฒฐ์ ํ๋๊ฒ ์ ์ผ ํธ๋ฆฌํจ
์ฌ๊ธฐ์ ์ข๋ ์์ธํ ์ํ ๊ด๋ฆฌ๊ฐ ํ๊ณ ์ถ๋ค ๊ทธ๋ฌ๋ฉด ์ํ ๋ ๋ฒจ์ ๊ฐ์ ํ๋ ๋ ์ ์ํ๋ฉด๋จ ์๋ฅผ๋ค์ด X State ์ START, ING, STOP
์ด์ฐจํผ ์ ๋ํฐ๋ ๋ค ์ปดํฌ๋ํธ๋๊น UI๊ฑด ์บ๋ฆญํฐ๋ ๋น์ฆ๋์ค ๋ก์ง์ด๊ฑด ๋ ํผ๋ฐ์ค๋ง ๋ค ๊ฑธ์ด๋ฒ๋ฆฌ๊ณ
X ์ํ์ Y ๋จ๊ณ์์ ํธ์ถํ ํจ์๋ค๋ง ์ฐจ๋ก์ฐจ๋ก ์ ๋ํฐ ์ด๋ฒคํธ๋ก ์ถ๊ฐํด๋ฒ๋ฆฌ๊ธฐ