์ฝ๋ฃจํด ์์ฃผ ๊ป์ผฐํ๋ฉด GC๊ฐ ์ฑ๊ธ๋ฒ๊ธํ๋ค๊ณ ํด์ ์ด๋ฒ ์ฐ์ต์๋ถํฐ๋ UniTask๋ก ๊ต์ฒดํด์ ์ฐ๊ณ ์์
๊ทธ๋ฐ๋ฐ ์ง๊ธ ์ฐ๊ณ ์๋ ํํธ๊ฐ
ํน์ ์กฐ๊ฑด์์ ์คํ๋ผ์ดํธ๋ฅผ ์ ๋ฉธ์์ผ์ผ ํ๋ ๊ฑด๋ฐ ๊ทธ ์กฐ๊ฑด์์ ๋ฒ์ด๋๋ฉด ์คํ๋ผ์ดํธ ์์ฒด๊ฐ ๊บผ์ง๋ฉด์ ๋น์ฐํ ์ ๋ฉธํ๋ ํ์๋ ์ฌ๋ผ์ง๊ณ
๊ทธ ์กฐ๊ฑด์ผ๋ก ๋ค์ด๊ฐ๋ฉด ๋ค์ ์คํ๋ผ์ดํธ๊ฐ ์ ๋ฉธ๋จ
๊ทธ๋ฆฌ๊ณ ์ด๋ค ์ํ์์ ์ง์ ํ๋๋์ ๋ฐ๋ผ ์คํ๋ผ์ดํธ๊ฐ ์์๋ก ๋ฐ๋๊ธฐ ๋๋ฌธ์ ์ด ์ ๋ฉธํ๋ ์์ ์ ๋ฉ์ท๋ค๊ฐ ๋ค์ ์์ํด์ผ ํ๋ ๊ณผ์ ์ด ์๋นํ ๋น๋ฒํ๊ฒ ์ผ์ด๋๋๋ฐ
์๋๋ผ๋ฉด ํด๋์ค ๋ด์์ ๋ฉค๋ฒ๋ณ์๋ก ์ค๋จ์ฉ ํ ํฐ ๋ง๋ค์ด๋๊ณ ๊ทธ๊ฑธ ์ด์ฉํ๋ ค๊ณ ํ์
์ฐพ์๋ณด๋๊น ํ ๋ฒ ์บ์ฌ ๋ช ๋ น ์์ฒญํ ํ ํฐ์ ์ฌ์ฌ์ฉํ ์ ์๋ค๋ ๋ชจ์์
๊ทธ๋์ ์ผ๋จ ์๋์ ๊ฐ์ด ๋ฉ์๋ ๋ด์์ ์ง์ญ ๋ณ์๋ก ๋ง๋๋ ๋ฐฉ์์ผ๋ก ์ง๊ธด ํจ
ย ย private async UniTaskVoid BlinkMark(Sprite[] swapSprite)
ย ย {
ย ย ย ย CancellationTokenSource stopTaskToken = new CancellationTokenSource();ย ย ย //๋งํฌ ๊น๋นก์ด๊ฒ ํ๋ ์ค๋จ์ฉ ํ ํฐ
ย ย ย ย int i = 0;
ย ย ย ย while (taskWorkManage)ย ย //taskWorkManage๋ ๋ค๋ฅธ ๊ณณ์์ ์ ์ธ๋์ด true false๊ฐ ๋ฐ๋๋ค
ย ย ย ย {
ย ย ย ย ย ย await UniTask.Delay(TimeSpan.FromSeconds(1), cancellationToken: stopTaskToken.Token);ย ย //1์ด๋ง๋ค ๋งํฌ ๊ต์ฒด
ย ย ย ย ย ย i = (i + 1) % 2;
ย ย ย ย ย ย mark.sprite = swapSprite[i];
ย ย ย ย }
ย ย ย ย stopTaskToken.Cancel();
ย ย ย ย stopTaskToken.Dispose();
ย ย }
์ฌ๊ธฐ์ ์ง๋ฌธ
์ ๊ฑฐ ๋งค๋ฒ new() ํ๊ฒ ํด๋ ๋๋ ๊ฑฐ ๋ง์? ๋ฉ๋ชจ๋ฆฌ ์ชฝ์ผ๋ก ๋ฌธ์ ๊ฐ ๋ ์ง ์ ๋ ์ง๋ฅผ ๋ชจ๋ฅด๊ฒ ๋ค
๋ญ ๊ทธ๊ฑฐ ์ ํ๋ฉด ๋ฐฉ๋ฒ์ด ์๊ฒ ๋ ์ถ๊ธด ํ์ง๋ง
๋์ค์ ํ๋กํ์ผ๋ง ํ๋ฉด ํ์คํด์ง๊ฒ ์ง๋ง ์ผ๋จ ํน์๋ ์ถ์ด์ ๋ฌผ์ด ๋ด
์๋๋ฉด ๋ ๋์ ์ฝ๋๊ฐ ์์์ง๋ ์กฐ๊ธ ๊ถ๊ธํจ
taskWorkManage๊ฐ true์ผ๋ ์คํ๋๊ณ false์ผ ๋ ๋ฉ์ถ๋๊ฑธ ์๋ํ๊ฒ ๊ฐ์๋ฐ ๊ทธ๋ผ ๊ธฐ์กด ์ฝ๋๋ while(true)๋ก ์กฐ๊ฑด ๋ณ๊ฒฝํด๋๊ณ while๋ฌธ ํ์ถ ์ cancel dispose ์์ ์ค ๋ค์. taskWorkManage๊ฐ true๊ฐ ๋ ๋ ๊ธฐ์กด ํ ํฐ cancel, dispose ์ํค๊ณ ์ ํ ํฐ ๋ฐํํ๋ฉด์ ์ ํจ์๋ฅผ ์คํ์ํค๊ณ false๊ฐ ๋ ๋ ๊ทธ ํ ํฐ์ cancel์ํค๋ฉด ๋์ง์์๊น?
๊ณ ๋ฌ๋ฏ ๋ณธ๋ฌธ ํจ์์์ cancel dispose๋ฅผ ๊ฐ taskWorkManage๋ฅผ true๋ก ํ์ฑํ ์ํค๊ธฐ ์ ๋ถ๋ถ์ผ๋ก ์ฎ๊ฒจ๋๋ ์๊ธฐ์ธ ๊ฒ ๋ง์ฆ? taskWorkManage=false ๋ค์๋ .Cancel() ๋ฐ๋ผ์ค๋ ๊ฑฐ๊ณ
๋ค ๋ง์์. teskWorkManage ๋ณ์๋ ๊ทธ๋ผ์ด์ ์ธ๋ชจ์์ด์ง๋ ์์ ๋ ๋๊ณ ์.
ใ ใ ใณใณ
์ฌ์ค์ ๊ทธ๋ฅ ๋ฐ์ดํฐ๋ช๊ฐ ์๋ ๊ตฌ์กฐ์ฒด์ธ๋ฐ ๋ชธ๋นํ์ง ๋ง๊ณ ๊ทธ๋ฅ new ํด๋ผ ์ด๊ฒ ๋ญ์ง์ด๋ ธ
๊ฑ ๋ณธ๋ฌธ๋๋ก ํด๋ ๋๋จ ์๊ธฐ?