์์ดํ ์ ์ป๋๋ค->๋ฅ๋ ฅ์น๋ฅผ ๋ชจ๋ํ์ด์ด๋ก ์์ ํด์ ์์ ํ๋ค ์ด๊ฒ ๋จธ๋ฆฌ๋ก๋ ์ฌ์ด๋ฐ
๋ง์ ์์ดํ ์ ๋จน๊ณ , ์ธ๋ฒคํ ๋ฆฌ์ ์์ฑํ๊ณ , ๊ทธ ์์ดํ ์ ์ฅ์ฐฉํ์๋ ๋ฅ๋ ฅ์น๋ฅผ ์์ ํ๊ฒ ํ๋ค๋๊ฒ ์๊ฐ๋ณด๋ค ๊ตฌํ์ด ํ๋๋ค
๋์๋ธ๋ก๋ผ์ดํฌ๊ฐ์ ์ธ๋ฒคํ ๋ฆฌ ์คํ์ผ์ ์ํ๋๋ฐ, ๋ด๊ฐ ์์ ์ ๋ง๋ค์๋ ๋ฐฉ์์ด๋ผ์ ๋์๋ธ๋ก ๋ผ์ดํฌ๊ฐ์ ์ธ๋ฒคํ ๋ฆฌ ์คํ์ผ์ ๋๋๋ฐ ๋ฅ๋ ฅ์น ์์ ์ด ์๋๋ค
๋ค๋ฅธ ์ฌ๋๋ค์ ์ธ๋ฒคํ ๋ฆฌ ํ๋ฃจ๋ง์ ๋ง๋ค๋๋ฐ ํ ์ผ์ฃผ์ผ์ฏค ์ก์์ผ๊ธ๋ค
๋ฅ๋ ฅ์น๋ฅผ ๋ฐฐ์ด๋ก ์จ์ ์ฐธ์กฐ๋ฅผ ํด์ผํ๋๋ฐ, ๋ด๊ฐ ์๊ฐ๋ณด๋ค ์ด ๋ถ๋ถ์์ ์ฝํ๋ค
์ฅ์ฐฉํ๋ค = ๋ฅ๋ ฅ์น๊ฐ ์ค๋ฅธ๋ค ์ง๊ฒฐ ์ํค๋ฉด ๊ด๋ฆฌ ์ด๋ ค์์ง ์ฅ์ฐฉํ๋ค = ์ํฅ์ ๋ฐ๋๋ค ์ํฅ์ ๋ฐ๋๋ค ์ค ํ๋๊ฐ ๋ฅ๋ ฅ์น๊ฐ ์ค๋ฅธ๋ค ์ฌ์ผ ํ๋ ์๋ธํจ ์ ๊ฐ๋ ์ผ๋ํด๋๊ณ ์์ ํ์
์, ์ด ๊ฐ๋ ์ผ๋ก ์ดํด๋ฅผ ํด์ผํ๋๊ฑฐ๊ตฌ๋. ์ด์ฉ์ง ๋ด๊ฐ ์ ๊ทผ์ ์ข ์๋ชปํ๋ฏ ๊ณ ๋ง๋ค.
๋์๋ธ๋ก ๋ก๊ทธ ๋ผ์ดํฌ ์์ด๋ฉด ๋ ์ฝ๊ฒ ๊ด๋ฆฌํด์ผํจ. ์ด ์์ดํ ์ฅ์ฐฉ ๋ฐฉ์์ ์ฌ์ฉํ๋ ๊ฐ์ฒด๊ฐ ์๋ฐฑ ์์ฒ๊ฐ๊ฐ ์๋ ์ด์์์ผ ์ฐ์ฐ์ ํฉ์ฐ์ ๊ณ์ ๋ค๊ณ ๋ค๋ ํ์๊ฐ ์์. ์ฅ์ฐฉ ๋๋ง๋ค ํฉ์ฐ ๊ฐ์ฐํ์ง ๋ง๊ณ ํ์ํ ๋ ๋ง๋ค ํ์ฌ ์ํฅ ์ฃผ๋ ์ ๋ค ๊ทธ๋๊ทธ๋ ํฉ์ฐํ์ . ๊ฐ์ฒด๊ฐ ์๋ฐฑ ์์ฒ๊ฐ ๋๋ ๊ฒ ์๋ ์ด์ ๋ฌธ์ ์์.
์, ๊ทธ๋ฌ๋ฉด ๊ฒฐ๊ตญ ์ค๊ฐ์ ์ฐ์ฐํด์ ์ต์ข ๊ฐ๋ง ๊ณ์ฐํ๊ฒ ๋ฐ๊ฟ์ผ๊ฒ ๊ตฌ๋ ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฑธ ์ ๋ฐ์ดํธํ๊ณ ? ๊ณ ๋ง๋ค
์ค๊ฐ์ ์ฐ์ฐํ๋จ๊ฒ ๋จผ ๋ป์ธ์ง ๋ชจ๋ฅด๊ฒ์. ์ํผ ํ์ํ ์๊ฐ๋ง๋ค ๊ทธ๋๊ทธ๋ ๊ณ์ฐํ๋ ์๋ฏธ์. ๊ณ์ฐ์ด ๋์ฐ์ด ๋๋ฉด ๋ณ๊ฒฝ์ ๋์ฒํ ๋ ์์ด ๊ฐ๊ธฐ ์์ํจ.
ใ ใ ๋ค๋ง์ ๊ทธ๋ฅ ์์ดํ ์ Equipํ ๋๋ง ๊ณ์ฐํ๋ฉด ๋๋๊ฑฐ ์๋์ผ? ๋๋ ์ง๊ธ ๊ทธ๋ ๊ฒ ์ดํดํ๊ณ ์์
์ด๊ฑฐ๋ ์ด๋ฐ ๋ฐค์ ์ถ๊ฐ ๊ธฐ์ ํด์ค. ์ด๊ฑด ํด๋์ค ๊ตฌ์กฐ์ ๊ฐ๋ ์ชผ๊ฐ๊ธฐ์ ๋ฐ์ ํ ๋ฌธ์ ๋ผ ์ ๋ต์ ์์.
์ ์ฑ๋ฅ์ด ๊ฑฑ์ ๋๋ฉด ๊ตฌ์ฑ์์๊ฐ ๋ฐ๋ ๋๋ง๋ค ์ฆ๊ฐํ๋ ์นด์ดํฐ ๊ฐ ๋ฃ๊ณ ์ฐ์ฐ ๊ฒฐ๊ณผ ์บ์ฑํด์ ์กฐํํ์ . ์ธ๋ถ์์ ์กฐํ ํ ๋ ์บ์ฑ๋ ๊ฐ์ ์ฃผ๋ ๋ฐ, ๋ง์ฝ ์นด์ดํฐ ๋ฐ๊ปด ์์ผ๋ฉด ๊ทธ๋ ๋ค์ ๊ณ์ฐํด์ ์บ์ฑํ๊ณ ๋๊ฒจ์ฃผ๋ ํํ๋ก. ใ ใ ? ์ด ๊ฒฝ์ฐ๊ฐ ์๋์ ์ผ๋ก ๋ฒ๊ทธ์ ์ฌ์ง๊ฐ ์ ์.
์ ์ด๊ฑฐ๋ ๋๋ฌด ์ด๋ ค์ด ๊ฐ๋ ์ธ๊ฑฐ ๊ฐ๋ค, ์ ๋๊ธ์ ์ดํด๊ฐ๋๋ฐ, ํน์ ์ฐธ๊ณ ํ ๋งํ ๋ฌธ์ ์์ด? ๋ต๋ณ ๊ณ ๋ง์ด๋ฐ 2๋ฒ์งธ๊บผ๋ ๋ด๊ฐ ์ปด๊ณต ์ ๊ณต์ด ์๋๋ผ์ ์ข ์ดํด๊ฐ ์ด๋ ต๋ค ๋ฏธ์ํ๋ค
๋ฌธ์๋ ๋ชฐ?๋ฃจ ํฐ์ด๋ผ ์ง๊ธ ๋น์ฅ ๋ ๋๋ตํ๊ธฐ ์ด๋ ค์. ์ค๋ ๋ฐค ์ค์ ์์ ์ฝ๋ ๋ฌ์์ค. ๋ด์ผ ํ์ธํ์ .
์ง์ง ๊ณ ๋ง๋ค, ์ผ๋จ ์ฒซ๋ฒ์งธ๋ ์์ ํ ๋ ค๊ณ ๊ฒฐ๊ตญ ์ต์ข ๊ฐ๋ง ๋ณด์ด๋ฉด ๋๋๊น ์ ๋ถ ํ๋ํ๋ ๋ฐฐ์ด๋ก ๊ฐ์ ์ ์ฅํ ํ์๊ฐ ์์๋ค
class CachedValue int updatedAt = -1 int counter = 0 object value get set ์ด ์ ๋
์๋ฅผ ๋ค์ด, status ๊ตฌ์กฐ์ฒด๋ก ์คํฏ ๊ด๋ฆฌ๋ฅผ ํ๋ค๊ณ ์น๋ฉด ์ ๊ธฐ์ value๊ฐ status๋ฉด ๋จ. ์คํฏ์ ์ํฅ์ ์ค ์ ์๋ ํ์๊ฐ ๋ฐ์ํ๋ฉด counter ๊ฐ์ 1์ฉ ์ฆ๊ฐ ์ํค๋ฉด ๋๊ณ value์ ๊ฐ์ ์ ์ฅํ ๋, ๋น์์ counter ๊ฐ์ updated์ ์ ์ฅํ๋ฉด ๋จ.
๊ทธ๋ผ value๋ฅผ getํ ๋ counter์ updatedAt์ด ๋ค๋ฅด๋ฉด ์บ์ฑ๋ ๊ฐ์ด ์ ํจํ์ง ์์ ์ ์์ผ๋ ๊ทธ๋ ์๋ก value๋ฅผ ์ฌ ๊ณ์ฐํด์ ์ ์ฅํด์ฃผ๊ณ updatedAt ๊ฐฑ์
์บก์ํ๋ ์ถ์ํ๋ ์ ๋ง๋๋ฃจ ์ฐ๊ณ . ๊ฐ getํ ๋ get ๋ด์์ counter๋ updatedAt ๋น๊ตํด์ Func ๊ฐ์ ๊ฑธ๋ก ์์์ value ์๋ก ๊ณ์ฐํ๊ฒ ํ๋ ๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ์.
์ค์ผ์ด ๊ทผ๋ฐ ๋ ๋ค๋ฅธ ์ง๋ฌธํ์. ์ด์ ๋ฅ๋ ฅ์น๋ ์ฐจ๋ผ๋ฆฌ ์์ดํ ๋งค๋์ ์์ ์ ๋ถ ํฉ์ฐํํ์ ๊ทธ ํฉ์ฐํ ๊ฐ์ ์ด๋ฒคํธ๋ก ์ฒ๋ฆฌํ ๋ ค๊ณ ํจ. ๊ทผ๋ฐ ์ด์ ๊ถ๊ธํ๊ฒ ํน์ ์์ดํ ์ ํน์ํจ๊ณผ(ํ๋ ์ด์ด ๋ฐ๋ฐ๋ฅ์ ๋ถ์ด ๋๋ค๊ฑฐ๋) ์ด๋ฐ๊ฑฐ๋ ์ด๋ป๊ฒ ์ค์ ํด์ผํ๋? ๋ฅ๋ ฅ์น ํฉ์ฐ๊น์ง ์๊ฒ ๋๋ฐ ๋ฐฐ์ด ์ค์ ํด์ผํ๋
์ด๊ฒ๋ ์ฐ์ถ ๋ด๋นํ๋ ๋งค๋์ ๋ง๋ค์ด ๋๊ณ ๊ด๋ฆฌํ์ . ๋ช ๊ฐ์ง ๋ฐฉ๋ฒ๋ก ์ด ์๊ฒ ๋๋ฐ... ๋ด๊ฐ ์๊ฐํ๋ ์ฝ๊ณ ์ธ๋งํ ๋ฐฉ์ ์๋ ค์ฃผ๊ฒ ์.
์ ์ฐ์ถ์ด ์๋๋ผ ์์ดํ ํน์ํจ๊ณผ ์๊ธฐ๊ตฐ. ์ ๋ง.
์. ๋ด๊ฐ ์ฃผ๋ก ์ฐ๋ ๋ฐฉ์์ ํน์ํจ๊ณผ๋ฅผ ๋ฐํํ ์ ์๋ ์์ค๋ง๋ค interface๋ฅผ ์ฌ๊ณ ํจ์๋ฅผ ์ฝํ๋ ๊ฑฐ์. ๊ฐ๋ น ์ด๋ฐ ์์. class itemSomething : item, iTriggeredSource iTriggeredSource.Trigger(TriggerTiming timg, param) ์ด๋ฐ์์ผ๋ก ๊ฐ๋ฅ์ ์ก์ผ์
ํจ์ 1์ธ์๋ enum 2์ธ์๋ ๋ค์ค ์ธ์๋ก. enum์ ๊ฒ์์ ๋ง์ถฐ์ OnMoved, OnDameged ์ ์ํด์ ์ฌ์ด ๋๊ณ ์์ดํ ๋ง๋ค ์คํฌ๋ฆฝํธ ์ง์ .
๊ณ ๋ง๋ค ๊ณ ๋ คํด๋ณผ๊ฒ
๋ ๋ญ ์์ง. ์ ๋ํฐ ์ฐ๋ฉด ์ด์ง๊ฐํ๋ฉด ์์ ๊ฐ์ ํํ๋ก ์์ ํ ๋ C# interface ์ ํ์ฉํ์ . ์ฝ๋ ์์ญ ๋ผ์ธ ์๋ ์ ์์
๋ด๊ฐ ์๋ชฐ๋ผ์ ๊ทธ๋ฐ๋ฐ ์ธํฐํ์ด์ค๋ ๊ฒฐ๊ตญ ๋ด๊ฐ ๊ทธ ์ธํฐํ์ด์ค์ ํ ๋น๋ ๋ฉ์๋๋ฅผ ๊ตฌํํด์ผํ๋ ๋ฉ์๋๋ผ์ ํต์ผ๊ฐ์ ์ค ์ ์๋๊ฒ๊ฐ์๋ฐ ์ฝ๋๋ฅผ ์๋๋ค๋๊ฑด ๋ญ์ผ? ๋ด๊ฐ ์๋ชฐ๋ผ์ ๊ทธ๋ผ
์ด๊ฒ๋ ์๋ ๊ฐ์ด ์ค๋ ๋ฐค ์ค์ ๋ฌ์์ค ๋ด์ผ ๋ณด์ .
๊ณ ๋ง๋ค ๋ ๋ด ๊ฒ์ ๋ฐ๋งคํ๋ฉด ๊ณต์ง๋ก ์ค๊ฒ.. .๋ฌผ๋ก ์ค๋ ์ํ ํ๋ฆฌํฐ๊ฒ ์ง๋ง
์ ์ด์ ์ฝ์์๋ฆฌ ๋ ๊ธธ์ด์ ธ์ ๋ป์๋ค. ๋ฏธ์ํ. ์ค๋ ์ฒ์ฒํ ๋ตํด์ค๊ฒ.
๊ณ ๋ง๋ค ใ ใ ๊ธฐ๋ค๋ ธ์ ์์๊ณ
๋ฒ๋๋น๋ฒ ๋ถ์ค ์งํค๋ฉด์ ํฐ์ผ๋ก ๋ตํ๋ ๊ฑฐ๋ผ ๋ต ๋๋ฆผ ๋์ถฉ ์ง๊ธ๋ถํฐ ์จ ๋ด