๋ฒํ์์คํ
์ ๋ง๋ค์๋๋ฐ ๋ญ๊ฐ ๋ง์กฑ์ค๋ฌ์์ ์ฌ๋ ค๋ณด์์.
ํผ๋๋ฐฑ ํ์
๊ธฐ๋ณธ์ ์ผ๋ก ์ด ๊ฒ์์ ํด์ ๊ฒ์ ๊ฐ๋จํ ๋ ํ๋ ๋ ํ๋๋ผ ์๊ฐํ์๋ฉด ๋๋๋ค
๋งจ ์ฒ์์ ๋ฒํ ์์คํ
์ ์๊ฐ ํ์๋
ํ์ฅ์ฑ์ด ํฌ๋ฉด ์ข๊ฒ ๋ค๊ณ ์๊ฐ์ ํด์ ๋ฏธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ข ์๊ฐ ํ์ต๋๋ค.
๊ณต๊ฒฉ์ผ๋ก ๋๋ฒํ/๋ฒํ๋ฅผ ๊ฑด๋ค.
๋ชจ๋ ์ ๋์๋ ๋ฒํ ์์คํ
์ด ์กด์ฌํ๋ค.
์ด ๋ฒํ ์์คํ
์๋ ๋ฒํ๋ก ์ด๋ฃจ์ด์ง ๋ฆฌ์คํธ๊ฐ ์กด์ฌํ๋ค.
๋งค ํด์ด ์ง๋ ๋๋ง๋ค ์ด ๋ฆฌ์คํธ๋ฅผ ์ํํด์ ๋ฒํ๋ฅผ ์งํ์ํจ๋ค. ex)๋ํธ๋
๋ฒํ ๋ด๋ถ์๋ ๋ฒํ ๊ธฐ๊ฐ์ด ์กด์ฌํด์ ์ด ๋ฒํ ๊ธฐ๊ฐ์ด ๋์ด๊ฐ๋ฉด ๋ฒํ๋ ์์์ ์ฌ๋ผ์ง๊ณ ์๋ ์ํ๋ก ๋๋๋ฆฐ๋ค.
๋ค๋ง ๋๊ฐ์ ๋ฒํ๊ฐ ๋ ๋ค์ ๊ฑธ๋ฆด ๊ฒฝ์ฐ์ ๊ฐฑ์ ํฉ๋๋ค.
์กฐ๊ธ ๋ ์์ธํ ๊ตฌ์กฐ๋ ์ด๋ ์ต๋๋ค.
๊ณต๊ฒฉ์๋ ๋ฐฉ์ด์์ ๋ฒํ ์์คํ
์ ๋ฒํ์ ์ด๋ฆ๊ณผ ํด์ ์ ๋ฐ๋ํ Action์ ์ค๋๋ค.
๋ฒํ ์์คํ
์ ๋ฐ์ ๋ฒํ์ ์ด๋ฆ์ ๊ธฐ๋ฐ์ผ๋ก ๋ฒํ๋ฅผ ์์ฑํด ๋ฆฌ์คํธ์ ๋ฃ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ผ์ ํด์ด ์ง๋๋ฉด ์ฌ๋ผ์ง๋ฉด์ ์๊น ๋ฐ์ Action์ ๋ฐ๋ํฉ๋๋ค.
์ด Action์ ์๋ ์ํ๋ก ๋๋๋ฆฌ๊ธฐ ์ํ ํจ์ ์
๋๋ค.
๋ค์์ ๋ฒํ ๋ด๋ถ์ ๋๋ค.
์ผ๋จ ์์ฑ์๋ฅผ ํตํด ๊ธฐ๋ณธ์ ์ธ ์ด๊ธฐํ์ ๋ณ์ ํ ๋น ๋ฑ์ ์งํํฉ๋๋ค.
๋ฒํ ๋ด๋ถ ๋ก์ง์ ํฌ๊ฒ ์ฒซ ํ์ฑํ์, ๋ฒํ ์งํ, ๋ฒํ ํด์ ์
์ด๋ ๊ฒ 3๊ฐ๋ก ๋๋์ด์ ธ ์์ต๋๋ค.
์ด 3๊ฐ์ฃ
์์ ํ ๋์ ๋๋ ๋๋ ๋ณ ๋ด์ฉ์ด ์์ต๋๋ค. ๋ถ๋ชจ ํด๋์ค๋๊น์!
๊ทธ๋ฆฌ๊ณ ๊ฐ์ด๋ฐ ๋ฒํ ์งํ ํจ์๋ ๋ด๋ถ์ ๋ฒํ ์นด์ดํธ๋ฅผ ์ฆ๊ฐ์์ผ ๋ฒํ ๊ธฐ๊ฐ์ ๋์ด๊ฐ๋ฉด ๋นํ์ฑํ ์ํต๋๋ค!
public event Action<string> RemoveBuff;
์ด ์น๊ตฌ์ ์ญํ ์ ํด์ ํ ๋ ์ด๋ฆ์ ๋ฐ์์
๋ฒํ ์์คํ
์ ์๋ ์ด ์น๊ตฌ์์ ๋ฆฌ์คํธ ํด์ ๋ฅผ ํด์ค๋๋ค.
๋ฒํ ์์คํ
์ ์๋ค๊ฐ ๋ ์์ธํ๊ฒ ์ดํด๋ณด์ฃ
์ด ๋ฒํ ์น๊ตฌ๋ ์ถ์ํด๋์ค์ธ ๊ฒ์ ๋ณด๋ฉด ์ ์ ์๋ฏ์ด ๊ฐ๊ฐ์ธ์ ๋ฒํ๋ค์ ๋ง๋ค๋ ์์์ฉ๋ ์
๋๋ค.
๊ทธ๋์ ์์์ฉ ๋ฒํ๋ฅผ ํ๋ ๊ฐ์ ธ์์ต๋๋ค.
์ด ๋ฒํ๋ ์ ์๊ฒ ์ผ์ ์ํ์ด์์ ๊ฑธ์ด ์ฌ๋ก์ฐ ๋๋ฒํ๋ฅผ ๊ฑฐ๋ ์น๊ตฌ์
๋๋ค.
๋ฒํ๊ฐ ํ์ฑํ ๋ ๋ ์๋์คํฏ์ ๊ฐ์์ํค๊ณ ๋ฒํ๊ฐ ๋๋ ๋ ์๋๊ฐ ์๋๋๋ก ๋์๊ฐ๋ ์ฝ๋๊ฐ ์์ต๋๋ค.
๊ฐ๋จํ์ฃ ? ์ด์ ์ด ๋๋ฒํ ๊ฐ์ ๊ฒฝ์ฐ์ ์ง์ ๋ ๋ ๋ณํ๊ฐ ์๊ธฐ์ ProgressFunction์น๊ตฌ ๋ด๋ถ์ ์๋ฌด๊ฒ๋ ์์ง๋ง
์ง์๋์ ์ฃผ๋ ๊ฒฝ์ฐ์ ์ฒด๋ ฅ์ ํผํด๋ฅผ ์ค๋ค๋๊ฐ ํ๋ ์ฝ๋๋ฅผ ์ถ๊ฐ์ํฌ ์๋ ์๊ฒ ์ฃ ?
์ด์ ๋ฒํ ์์คํ
์ ํ์ธํด๋ณด์ฃ
์ค๋ธ์ ํธ์ ์ง์ ์ ์ผ๋ก ํ ๋น๋๋ ๋ฒํ ์์คํ
์
๋๋น.
๊ธฐ๋ฅ์ ๋ฒํ ์ถ๊ฐ ๋ฒํ ์งํ ๋ฒํ ์ ๊ฑฐ ์ด๋ ๊ฒ 3๊ฐ์
๋๋ค.
์ฌ์ค ๋ณ ๋ด์ฉ์ ์์ด์
RemoveBuff์ด ์น๊ตฌ๋ ๋ฒํ ๋ด๋ถ์ ์ด๋ฒคํธ๋ก ํ ๋น๋ฉ๋๋ค.
๋ฒํ ๋ฆฌ์คํธ์์ ์ ๊ฑฐ๋ฅผ ํด์ฃผ์ฃ
AddBuff์ด ์น๊ตฌ๋ ๊ณต๊ฒฉ ์คํฌ๋ฆฝํธ์์ ํธ์ถ ๋ฉ๋๋ค.
๊ณต๊ฒฉ ์คํฌ๋ฆฝํธ์์ ์ด๋ฆ๊ณผ Action์ ๊ฑด๋ค์ฃผ์ฃ
์๋ ๊ฒ์
์ฌ๊ธฐ์ ํ๋ ์๋ฌธ์ !
๋ฒํ ์ด๋ฆ์ ๋ฐ์๋๋ฐ ์ด๊ฑธ ๊ธฐ๋ฐ์ผ๋ก ๋ฒํ๋ฅผ ์์ฑํ๋ ค๋ฉด ๊ทธ๋ฅ Switch๋ฌธ์ ์จ์ ์์ฑํ๋ฉด ๋๋๊ฑฐ ์๋๊ฐ?
์ ํ์ง๋ง ์ ๋ ๋ณ์ด ์์ต๋๋ค.
switch๋ฌธ์ ์ฐ๋ฉด ์ฃฝ๋ ๋ณ์ด ์์ด์
์ค๋ณต ์ฝ๋๋ฅผ ์ฃฝ์ด๋ ์ฐ๊ธฐ ์ซ์ดํด์ ๋ฌด์ ๊ถ ๋์
๋๋ฆฌ๋ก ๋์ฒดํฉ๋๋ค.
๊ทผ๋ฐ ๋ง์ ํด๋ณด๋๊น ์๋๋ ๊ฒ๋๋ค!
์๋ฌ๊ฐ ๋ ์!
์ฒ์์๋ ๋ง์ฐํ ํค๋ฅผ ์คํธ๋ง ๊ฐ์ ๊ฐ๋ณ ๋ฒํ๋ก ํ๋ฉด ๋ ์ค ์์์ด์
๊ทผ๋ฐ ์๋ฉ๋๋ค.
์ฒํ์ ํน๊ฐ ์ ํ๋ฌ ์ ๋๋ด c#๋ ๋์
๋๋ฆฌ๋ฅผ ์ด๊ธฐํ ํ ๋ ์ธ์คํด์ค๊ฐ ์๋ ํด๋์ค๋ฅผ ๋ฃ๋ ๋ฏธ์น์ง์ ๋ชปํ๋ต๋๋ค.
๊ทธ๋์ ์๊ฐํ์ฃ ์ด์งํผ ๋๋ ์คํธ๋ง์ ๋ฃ์ผ๋ฉด ๊ทธ ์คํธ๋ง์ ๋ง๋ ํด๋์ค๋ง ๋ฐ์ผ๋ฉด ๋๋๊ฒ์ธ๋ฐ..
๋ค ์๋๊ฒ ๋๋ผ๊ตฌ์ ์ ๋จธ๋ฆฌ๋ก๋
๊ทธ๋์ ์งํผํฐ ํ๋ ๋ฐ์ง๊ฐ๋์ด ์ก๊ณ ๋ฌผ์ด๋ดค๋๋ ๋ฐ๋ก ์๋ ค์ฃผ๋๋ผ๊ตฌ์
์ฝ๋ ๋ณด์๋ง์ ํ์ฑ์ด ๋์์ต๋๋ค.
์! ์์ฆ! ์จ๋ฐ! ์น์ค!
๋ฐ๋ก ์ปดํจํฐ ๋ค๊ณ ํ๋ฐ ๋นผ๋ฌ ๊ฐ์ต๋๋ค.
์ด๋ป๊ฒ value๊ฐ์ ์์ฑ์ ๋ธ๋ฆฌ๊ฒ์ดํธ๋ฅผ ๋ฃ์ ์๊ฐ์ ํ์ง???
์๋ฌดํผ ์ํ๋ ๋ชฉ์ ์ ๋ฌ์ฑ ํ์ต๋๋ค.
์คํธ๋ง ๊ฐ์ ๋ฃ์ด์ ์์ฑ์๋ฅผ ์ป์ผ๋ฉด ๊ทธ ๋ฒํ ํด๋์ค๋ฅผ ๋ฆฌ์คํธ์ ๋ฃ์ ์ ์์ผ๋๊น์
Buff newBuff = buffFactory.Invoke(transform.GetComponent<ICommonStat>(), duration, OnEndBuffAction);
์ด๋ ๊ฒ ๋ง์ด์ฃ
์คํธ๋ง์ ๋ฃ์ผ๋ฉด ๊ทธ์ ๋ง๋ ์์ฑ์๋ฅผ ์ป์ด Invokeํ๋ฉด ํด๋์ค๋ฅผ ์ค๋๋ค.
์ฌ์ค ์ด๊ฑฐ ๋ณด์ฌ์ฃผ๋ ค๊ณ ๊ธ ์ป์ต๋๋ค.
c# ์กฐ ์
์ ์๋ฌดํผ ์ ์๋ํ์ต๋๋ค.
๋ฒํ ํด์ ํ ๋ ๋งจ ์ฒ์์ ๋ฒํ ์ํ๋ฅผ foreach๋ฌธ์ผ๋ก ํ๋๋ ์ปฌ๋ ์
์ค์ผ๋์ ๋ฒ๊ทธ๊ฐ ํฐ์ง๊ธด ํ์ง๋ง
๋ค๋ถํฐ ํ์ด์ ๊ธ๋ฐฉ ๊ณ ์ณค์ต๋๋ค.
์์ธํ๊ฒ ์๋ค๋ฃจ๊ธด ํ์ง๋ง ๋งจ ์ฒ์์ ๋ฒํ ํ ๋นํ ๋ ๋ณด๋ด์ฃผ๋ AddBuff์ Action OnEndBuffAction = null๋ธ๋ฆฌ๊ฒ์ดํธ๋ ์คํฏ ์ธ์ ์ธ ๋ถ๋ถ์์ ํด์ ํ ๋ ํ์ํฉ๋๋ค.
์๋ฅผ๋ค์ด์ ํ์ ๋๋ฒํ๋ฅผ ์ค๋ ์คํ๋ผ์ดํธ๊ฐ ๋นจ๊ฐ๊ฒ ๋ณํ๋ค๋ฉด
ํด์ ํ ๋๋ ๋ฒํ ์์คํ
๋ด๋ถ์์๋ ๋ฒํ๊ฐ ์ฒ์ ์์๋ ๋ ์ด๋์ ๋ฌด์์ด ๋ณํ๋์ง ์์ง ๋ชปํ๊ธฐ ๋๋ฌธ์
์ด ์คํ๋ผ์ดํธ๋ฅผ ์๋๋๋ก ๋๋ ค์ฃผ๋ ํจ์๋ฅผ ๋ด์์ ๋ณด๋ด์ค๋๋ค.
๋
๊ทํ์ ์ฝ๋๋ ์ด์ ์ ๊ป๋๋ค
๋ง์๊ป ์ฐ์ ๋ ์ข์ต๋๋ค! ๋ค๋ง ๋ฒ๊ทธ๋ ์ฑ ์์ง์ง ์์ต๋๋ค!