๊ฐ๋ น ํฌ์ผ๋ชฌ์คํฐ ์๊ฐํด๋ด.
ํฌ์ผ๋ชฌ์ด ๊ณต๊ฒฉ์ ์๋ํ๋ฉด, ์๋ ํฌ์ผ๋ชฌ์ ํผ๊ฒฉ ์ดํํธ -> ์ฝ 5ํ์ ๋ ๊น๋นก๊ฑฐ๋ฆผ -> ๋ฐ๋ฏธ์ง(์ฒด๋ ฅ๊ฐ์) ์์ผ๋ก ์ถ๋ ฅ๋์์?
๊ทผ๋ฐ ์ด์ ํ๋์ด ์๋ฃ๋๊ธฐ ์ ๊น์ง ๋ค์ ํ๋์ด ์ถ๋ ฅ๋๋ฉด ์ ๋๋จ ๋ง์ด์ง? ๊ทธ๋ฌ๋๊น ๋ฐ๋์ ํผ๊ฒฉ ์ดํํธ๊ฐ ๋๋ ์ดํ์ ๊น๋นก๊ฑฐ๋ ค์ผํ๊ณ , ๊น๋นก๊ฑฐ๋ฆฐ ์ดํ์ ๋ฐ๋ฏธ์ง๋ฅผ ๋ฐ์์ผํ๊ณ .
๊ทผ๋ฐ ํผ๊ฒฉ ์ดํํธ๋ ๊ธฐ์ ๋ง๋ค ๋ค ๋ค๋ฅด๊ณ , ์ด์ ๋ฐ๋ผ ํ์์ ํ๋๋ค์ ์กฐ๊ธ์ฉ ์๊ฐ์ด ๋ฐ๋ ค๋ ํ ๋ฐ
์ด๊ฑธ ํด๊ฒฐํ๋ ค๋ฉด ๋ด๊ฐ ์๊ธฐ๋ก๋ ์ฝ๋ฐฑํจ์๋ฅผ ์จ์ผํ๋จ ๋ง์ผ.
๊ทผ๋ฐ ์ฝ๋ฐฑํจ์๋ฅผ ์ฐ๋ฉด ์ฝ๋ ๊ฐ๋ ์ฑ์ด ๋จ์ด์ง๊ฒ ๋๋๋ผ๊ณ , ๋ด๊ฐ ๋ฐ๋ผ๋๊ฒ๊ณผ๋ ๊ฑฐ๋ฆฌ๊ฐ ๋ฉ๊ฒ ๋ง์ด์ผ.
์๋ฅผ๋ค๋ฉด ์ด๋ฐ ์์ด์ง
public void Hit()
{
Effect();
Blink();
GetDamage();
}
๋ด๊ฐ ์ํ๋๊ฑด ์ด๋ฐ ๊น๋ํ ์ฝ๋์ธ๋ฐ ์ฝ๋ฐฑํจ์๋ฅผ ์ฐ๋ฉด...
public void Hit()
{
Effect();
}
private void Effect()
{
PrintAnimation().OnComplete(Blink);
}
private void Blink()
{ย ย ย ย
Blink(5).OnComplete(GetDamage);
}
๋ฑ๋ด๋ ์ ์ข์ ์ฝ๋๋ผ๋๊ฑด ์๊ฒ ์ด. ์บก์ํ์๋ ์ง๋ํ ์ ์ํฅ์ ๋ผ์น๊ณ ... ์ด๋ด ์ฝ๋๊ฐ ์ด๋จ์ด...!
๊ทผ๋ฐ ์ด๋ป๊ฒ ํด๊ฒฐํด์ผํ ์ง ๋ชจ๋ฅด๊ฒ ์ด. ๋ค๋ค ์ด ๋ฌธ์ ์ด๋ป๊ฒ ํด๊ฒฐํ์ด?
ํด๋น ๋๊ธ์ ์ญ์ ๋์์ต๋๋ค.
ํ์๋ผ์ธ์ด ๋์ ์ผ๋ก ์์ ๊ฐ๋ฅํ ๊ฑฐ์์ด>..!? ํ ๋ชฐ๋์ ๊ทธ๊ฑด
์คํ ์ดํธ ๋จธ์ ์ผ๋ก ํด๊ฒฐ๊ฐ๋ฅ. ํ๊ฒฉ์ ์คํ ์ดํธ 1. ํผ๊ฒฉ ์์ 2. ํผ๊ฒฉ ์ดํํธ ์คํ ์ดํธ 3. ํผ๊ฒฉ ๋ธ๋งํฌ ์คํ ์ดํธ 4. ํผ๊ฒฉ ๋ฐ๋ฏธ์ง ์คํ ์ดํธ 5. ํผ๊ฒฉ ์ข ๋ฃ ์ด๋ ๊ฒ ์ ์ํด๋๊ณ ๊ฐ ์คํ ์ดํธ ์งํ์ํค๋ฉด ๋ ๋ฏ.
ํ ์ด ๊ฒฝ์ฐ ์ ๋ฐ์ ์ธ ์คํฌ๋ฆฝํธ ์ด์ฉ์ FSM์ ๋งก๊ฒจ์ผ๊ฒ ๋ค? ์ด ๋ฐฉ๋ฒ๋ ๊ณ ๋ ค๋ ํด๋ด์ผ๊ฒ ๋ค
FSM ๊ฐ์๊ฑฐ ํ์์์. ๊ฑ ์คํ ์ดํธ๋จธ์ ํจํด์ผ๋ก ํ๋ฉด ๋จ.
๊ทธ๋๊น ์ฝ๋ฃจํด ์ฌ์ฉํ๋๊ฑฐ๋ ๋น์ทํ๊ฑฐ์ง? State Enter ํ ๋ flag = true์ผ์ฃผ๊ณ Exitํ ๋ flag = false; ํด์ฃผ๊ณ . ๊ทธ๋์ ๋ฉ์ธ์ while(!flag)๋ก ๋๊ธฐํ๊ณ ์๊ณ ...? ๋ด๊ฐ ์ดํดํ ๋ฐ๊ฐ ๋ง๋?
๋ฐ๋ก ๊ธ ํ์ ์ ๋ฆฌํด๋ด. ๋ด๊ฐ ์คํ ์ดํธ ํจํด์ ์๋ชป ์ฐ๊ณ ์๋์ง ๋ชจ๋ฅด๊ฒ ๋๋ฐ ์ผ๋จ ๋๋ ์ด๋ ๊ฒ ์ฐ๊ณ ์๋ค๋ผ๋๊ฑฐ ๋ณด์ฌ์ค
ใ ใ ใ ใ ๊ธฐ๋ค๋ฆด๊ฒ ์น์ ํ ์ค๋ช ๊ณผ ๋ ธ๋ ฅ ์ง์ฌ์ผ๋ก ๊ณ ๋ง์....!!
https://gall.dcinside.com/mgallery/board/view/?id=game_dev&no=112650&page=1
์ผ๋จ ๊ธ์ ์๋๋ฐ ์ ์๋๊ฑฐ ๊ฐ์ ๊ฑ ๋ณด๊ณ ๋ฌด์ํ์ ใ ใ ใ ใ ใ ใ
async/await ๋ฅผ ์ฌ์ฉํด๋ด
์ด๊ฑด ์์ ์ฒ์ ๋ณด๋ ํค์๋๋ค ํ ๋ฒ ํ์ธํด๋ณผ๊ฒ ๊ณ ๋ง์!
unitask๋ก await์์ผ๊ฐ๋ฉฐ ๋๊ธฐ์ ์ผ๋ก ์งํํ๊ธฐ?
ํผ๊ฒฉ ์ดํํธ๋ฅผ ๊ณต๊ฒฉ ์ดํํธ๋ก ๋ฐ๊ฟ์ ๊ณต๊ฒฉํจ์์ ๋๊ธฐ๊ณ ํผ๊ฒฉ ํจ์๋ ํ๋๋ก ํต์ผํ๊ธฐ
์ด ๊ฒฝ์ฐ ๋ด ๋ง์์ ๋ค์ง ์๋ ๊ตฌ์กฐ๊ฐ ๋์ฌ ๊ฒ ๊ฐ์์....
๋๋ ์ด๊ฑฐ ์ฝ๋ฃจํด์ผ๋ก ์ค์ผ์ค๋ฌ ํด๋์ค ๋ง๋ค์ด์ ์ผ์ ์ธ ํ์ฌ ์ ํธ์๋ ์๊ณ
์ฝ๋ฃจํด์ผ๋ก ์ด๋ค๋๊ฒ ์ง์ ์ flag = true; ์ํค๊ณ while(!flag) ์์ผ๋ก ๋๊ธฐ์ํค๋๊ฑฐ์ง? ๋ค๋ฅธ ์ชฝ์์ ๋๋๋ฉด flag = false ์์ผ์ฃผ๋ ๋๋์ผ๋ก?
์ ํํ๋ ์ฝ๋ฃจํด์ WaitUntil๊ณผ List๋ฅผ ํ์ฉํ๋๊ฑฐ์. list.Insert(A); list.Insert(B); list.Insert(C); ์ด๋ ๊ฒ list์ A,B,C ์ฝ๋ฃจํด ๋ฃ์ ๋ค์์ A ๋๋๋ฉด list์์ A ์ ๊ฑฐํ๊ณ B ์คํํ๊ฒ๋ ๋๊ฐ ๋งํ๋๋ก flag๋ฅผ ์จ๋ ๋๊ณ , WaitUntil ์จ๋ ๋๊ณ ๋ฐฉ๋ฒ์ ๋ง์
๊ฒฐ๋ก ์ ์ด list๋ฅผ ๊ด๋ฆฌํ๋ ์ค์ผ์ค๋ฌ ํด๋์ค๋ฅผ ๋ค์ํ ๋ฐฉ๋ฒ์ผ๋ก ๋ง๋ค๋ฉด๋ ๊ฑฐ์ผ
ํ ์ ์ ๋๋ฉด ๋ณ๋ ํด๋์ค ๋ง๋ค์ด์ ๋ฆฌ์คํธ๋ก ๊ด๋ฆฌํด์ผ์ง ์๊ฐํ๋๋ฐ ์ฝ๋ฃจํด์ ์ด๋ฐ ์ฌ์ฉ๋ฒ์ด ์๋์ง๋ ๋ชฐ๋๋ค. ํ์คํ ์ข์๋ณด์ธ๋ค ํ ๋ฒ ์ด ๋ฐฉํฅ์ผ๋ก ์์๋ณผ๊ฒ ์์ธํ ๋ต๋ณ ์ ๋ง์ ๋ง ๊ณ ๋ง์!!
uniRx ์ต์ ๋ฒ ์ฐ๋ฉด ์๋๋
์ฒ์๋ค์ด๋ณด๋ค ํ ๋ฒ ํ์ธํด๋ณผ๊ฒ!
์คํ ์ดํธ ๋จธ์ ๊ฐ์ ๋๋์ ์ต์ ๋ฒ ํจํด ์ธ๋ uniRx ์ฐ๋ฉด ๊น๋ํ๊ฒ ๋์ด
ํ๋ฒ ์ฅ ํ์ด๋ณด๊ณ ์๋๋ฐ ์ด๊ฑฐ ์ข ๊ด์ฐฎ๋ค์ถ๋ค...? ์๋นํ๋ฐ? ์ด๋ฐ๊ฒ ์๋์ง ์ ํ ๋ชจ๋ฅด๊ณ ์์์ด ๋๋ถ์ ์์ผ๊ฐ ๋์ด์ง ๊ธฐ๋ถ์ด์ผ ๊ณ ๋ง์!! ํ ๋ฒ ์ด๊ฒ๋ ์์๋ด์ผ๊ฒ ๋ค
๋๊ธ๋ณด๊ณ ์ข ์ฐพ์๋ณด๋๊น unitask ๊ฐ ๋ง๋ค.
๋ค์ํ ์๋ฃจ์ ์ด ์์ด์ ์ถ์ฒ
ํด๋น ๋๊ธ์ ์ญ์ ๋์์ต๋๋ค.
๊ฐ๋จํ๊ฒ ์ฐ์์ ์ผ๋ก ํจ์ ์คํํ๋๊ฑด ๋ํธ์์ด ๊ฐ๋จํ๊ณ ๊ฐ๋ ์ฑ ์ง๋ฆฌ๊ธดํจ
์ํ์ค ํ์คํ ์ข์ง. ๊ทผ๋ฐ ์ด๊ฑธ๋ก ์์ ๊ฐ์ ๋์์ด ๊ฐ๋ฅํ๊ฐ? ๊ฐ๋ น ํผ๊ฒฉ ์ ๋๋ฉ์ด์ ์ด 1์ด ์ง๋ฆฌ์ 10์ด ์ง๋ฆฌ๊ฐ ์๋ค๊ณ ํ๋ฉด ์ํ์ค๊ฐ ์์์ 9์ด๋งํผ ๋๊ธฐํด์ฃผ๋๊ฐ...?
๊ทธ๊ฒ ๋ํธ์ ์ํ์ค ๋จ์ ์. ์ํ์ค ์ด๊ธฐํํ๊ธฐ ์ ์ ์ค๊ฐ ๋๋ ์ด๋ฅผ 1์ด ๋ฃ์๊ฑฐ๋ 10์ด ๋ฃ์๊ฑฐ๋ ๋จผ์ ๊ณ์ฐํด์ผ๋จ
UniTask์จ๋ณด์ธ์ ์ ์ธ๊ณ์ ๋๋ค
์๊ทธ๋๋ ์์์ ์ฌ๋๋ค์ด ์ถ์ฒํด์ฃผ์ UniRX ์ฐพ๋ค๋ณด๋ ์ฌ๋๋ค์ด UniTask๋ง์ด ์ถ์ฒํ๋๋ผ๊ณ ์ ์ฌ์ฉ๋ฒ์ ๋ชฐ๋ผ์ ๋๊ธฐ๋ ค๊ณ ํ์๋๋ฐ ์ด ๋ฐฉ๋ฒ์ผ๋ก ํ๋๊ฒ ์ ์ผ ํธํด๋ณด์ด๋ค์ ํ ๋ฒ ์์๋ณด๊ฒ ์ต๋๋ค!
๊น๋นก์ด๋ ์์ ์ ํด๋์ค๋ก ๊ตฌํํ๋ฉด ์บก์ํ๋ ๋๊ณ ์ํ๊ด๋ฆฌ๋ ์ฌ์์ง! ์์ธํ๊ฑด ์คํธ๋ํฐ์ง ํจํด ์ณ๋ณด๋ฉด ๋์ฌ๊ฑฐ์. ์ข์ด๋ฐ ๋๋ ์์์ฝ๋ ์ฌ๋ ค๋ณผ๊ฒ
https://gall.dcinside.com/mgallery/board/view/?id=game_dev&no=112676&page=1
์ด๊ฑฐ
ํ๋ฒ ๋ด๋ฐ
ํ ๋๋ฐ ๊ฐ์๊ฐ ๋๊ฐ๋ ๋๋ค ์ค๋ ์ง๊ฐ์ ์ ๋ ํ ๊ฒ ์ง์ง์ง์ง ๊ณ ๋ง์!!!! ์ต๊ณ ์ผ ์ง์ง ๋ฅ๋ ฅ์๋ค ๋ง๋ค...
UniTask์ ์ถ์ฒ์ ํ๋ ๋ ๋ฐ์