๊ฐค ์ญ‰ ๋ณด๋‹ˆ๊นŒ ์‹ค๋ ฅ ์žˆ๋Š” ์‚ฌ๋žŒ๋„ ๋งŽ์ง€๋งŒ ์ž…๋ฌธํ•˜๋Š” ์‚ฌ๋žŒ๋“ค๋„ ๋งŽ์€ ๊ฒƒ ๊ฐ™๋”๋ผ๊ณ 

๊ทธ๋ž˜์„œ ๋‚ด์ผ ์ถœ๊ทผ๋„ ์•ˆ ํ•˜๊ฒ ๋‹ค,ย ๋‰ด๋น„๋“ค์—๊ฒŒย ๋„์Œ ๋ ๋งŒํ•œ ๊ธ€ ํ•˜๋‚˜ ์‹ธ๊ณ  ๊ฐ.

๋‚˜๋Š” ์ขƒ์†Œ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ณ  ํ”„๋กœ์ ํŠธ ์ „๋ฐ˜ ์ตœ์ ํ™”, ๊ด€๋ฆฌ ์—…๋ฌด ๋‹ด๋‹นํ•˜๊ณ  ์žˆ์Œ.

์†”์งํžˆ ๊ฐ๊ด€์ ์œผ๋กœ ๋ˆ„๊ตด ๊ฐ€๋ฅด์น  ์ •๋„๋กœ ์ž˜ ํ•œ๋‹ค๊ณ ๋Š” ๋ชปํ•˜๊ฒ ๋Š”๋ฐย 

์•ˆ ์งค๋ฆฌ๊ณ  ๋ถ™์–ด ์žˆ๋Š”๊ฑฐ ๋ณด๋ฉด ์ตœ์†Œ์ปท์€ ๋œ๋‹ค๋Š” ๊ฑฐ๊ฒ ์ง€


์จŒ๋“  ๋ณธ๋ก ์œผ๋กœ ๋“ค์–ด๊ฐ€๋ฉด,

์ตœ์ ํ™”๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœย ์ฝ”๋“œ ๋กœ์ง๋ถ€ํ„ฐ ํ•ด์„œ ๋ฆฌ์†Œ์Šค(์‚ฌ์šด๋“œ, ํ…์Šค์ณ, ๋ชจ๋ธ๋ง ๋“ฑ๋“ฑ)๊นŒ์ง€ ๊ต‰์žฅํžˆ ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ์ ์šฉ๋˜์–ด์•ผ ํ•จ.

๋˜ ์„ฑ๋Šฅ๊ณผ ํ€„๋ฆฌํ‹ฐ๋ฅผ ์ ์ ˆํžˆ ํƒ€ํ˜‘ํ•˜๋Š” ์ƒํ™ฉ์ด๋‚˜, ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง€๋”๋ผ๋„ ๊ฐ์ˆ˜ํ•˜๊ณ  ๋„˜์–ด๊ฐ€์•ผ ํ•  ๋ถ€๋ถ„์„ ํŒ๋‹จํ•˜๋Š” ๊ฒƒ ๋“ฑ๋“ฑ..ย 

๋‹จ์ˆœํžˆ ์ง€์‹ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ฒฝํ—˜์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Œ.ย ๋˜ ์ด๋Ÿฐ ๊ฒƒ๋“ค์„ ๊ธ€ ํ•˜๋‚˜๋กœ ๋‹ค ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋„ ์•„๋‹ˆ๊ธฐ๋„ ํ•˜๊ณ ..

๊ธฐ๋ณธ์ ์ด๋ฉด์„œ๋„ ๋ˆ„๊ตฌ๋‚˜ย ์‰ฝ๊ฒŒ ๊ตฌ์กฐ ๋ณ€๊ฒฝ ์—†์ด ์ง„ํ–‰ ์ค‘์ธ ํ”„๋กœ์ ํŠธ์—๋„ ๋ฐ”๋กœ ์ ์šฉํ•  ์ˆ˜ ์žˆ๊ณ , ํšจ๊ณผ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋‚ด์šฉ์„ ์จ๋ณผ๊นŒ ํ•จ.


์ด ๊ธ€์—์„œ ์„ค๋ช…ํ•  ๋‚ด์šฉ์€ ํž™๊ณผ ์Šคํƒ, ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์— ๋Œ€ํ•œ ์ตœ์†Œํ•œ์˜ ์ดํ•ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ํ•œ ์ธ์‚ฌ์ดํŠธ ํ™•์žฅ์ž„.

์‚ฌ์‹ค ๊ต‰์žฅํžˆ ๊ธฐ๋ณธ์ ์ธ ๋‚ด์šฉ์ธ๋ฐ, ์‹ ์ž… ์ˆ˜์ค€ ํ”„๋กœ๊ทธ๋ž˜๋จธ์™€ ์ผํ•  ๋•Œ ์ด๋Ÿฌํ•œ ๋‚ด์šฉ์„ ์•„์˜ˆ ๋ชจ๋ฅด๋Š” ๊ฒฝ์šฐ๋„ ํ—ˆ๋‹คํ•จ.

์‰ฌ์šด ๋‚ด์šฉ์ด๊ธด ํ•˜์ง€๋งŒ C#์— ๋Œ€ํ•œ ์ตœ์†Œํ•œ์˜ ์ง€์‹์€ ๊ฐ–๊ณ  ์žˆ์–ด์•ผ ์•Œ์•„ ๋จน์„ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž„.


์œ ๋‹ˆํ‹ฐ๋ฅผ ๊ตด๋ฆฌ๋‹ค ๋ณด๋ฉด ๊ฐ€๋น„์ง€๋ฅผ ์ตœ์†Œํ™” ํ•ด์•ผํ•œ๋‹ค,ย ๊ฐ€๋น„์ง€๊ฐ€ ํ”„๋ ˆ์ž„ ๋“œ๋ž์˜ ์›ํ‰์ด๋‹คย ์ด๋Ÿฐ ๋ง๋“ค์„ ๋งŽ์ด ๋“ค์„ ์ˆ˜ ์žˆ์Œ.

์ž์—ฐํžˆ ๊ทธ๋Ÿผ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ์ด๋Ÿฌํ•œ ๊ฐ€๋น„์ง€๋ฅผ ์ตœ์†Œํ™” ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ? ๋ผ๋Š” ์˜๋ฌธ์„ ๊ฐ–๊ฒŒ ๋จ.

๊ทธ ๋‹ต์„ ์–ป๊ธฐ ์œ„ํ•ด์„  ์ผ๋‹จ ๊ฐ€๋น„์ง€๊ฐ€ ๋ฌด์—‡์ธ์ง€, ์–ธ์ œ ์ƒ๊ธฐ๋Š” ๊ฒƒ์ธ์ง€ ์•Œ ํ•„์š”๊ฐ€ ์žˆ์Œ.


๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์˜ ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์•Œ๊ณ  ์žˆ์œผ๋ฉด ์ข‹์Œ.

OS ๊ด€๋ จํ•ด์„œ ๊ณต๋ถ€ํ–ˆ๋‹ค๋ฉด ๋ณธ ๊ธฐ์–ต์ด ์žˆ์„ ๊ฒƒ์ž„.ย ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•Œ์•„์„œ๋“ค ๊ณต๋ถ€ํ•˜๊ณ 

์ด ๊ธ€์˜ ๋‚ด์šฉ์„ ์ดํ•ดํ•˜๊ณ  ์จ๋จน๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ทธ๋ƒฅ ํž™, ์Šคํƒ ๋‘ ๊ฐœ๋งŒ ๊ธฐ์–ตํ•ด๋‘๋ฉด ๋จ.ย 

๋‹น์—ฐํžˆ ๋‚˜์ค‘์— ๋”ฐ๋กœ ๊ณต๋ถ€ํ•ด์„œ ๋‹ค ์•Œ๊ณ  ์žˆ์œผ๋ฉด ํ›จ์”ฌ ์ข‹๋‹ค.


๊ฐ€๋น„์ง€๋Š” ํž™ย ์˜์—ญ์— ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ ์ค‘ ๋ ˆํผ๋Ÿฐ์Šค(์ฐธ์กฐ)๋ฅผ ์žƒ์€ ๋ฉ”๋ชจ๋ฆฌ๋“ค์„ ๋งํ•จ.

์ฆ‰ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ํ• ๋‹น๋˜์—ˆ์ง€๋งŒ ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ๋ชจ๋‘ ์žƒ์—ˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋” ์ด์ƒ ๊ทธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ์ƒํƒœ๊ฐ€ ๋œ ๊ฒƒ์ž„.

C#์—์„œ๋Š” ์ด๋ ‡๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ฐ€๋น„์ง€๋ผ๊ณ  ์นญํ•˜๊ณ , ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์ด๋ผ๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์ •๋ฆฌํ•จ.

์ด ๊ณผ์ •์—์„œ ๊ฝค ๋งŽ์€ ๋น„์šฉ์ด ๋“ค๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋ ˆ์ž„ ๋“œ๋ž์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ž„.


๋‹ค์‹œ ์ •๋ฆฌํ•˜๋ฉด ํž™์— ํ• ๋‹น๋œ ์• ๋“ค ์ค‘ ๋ชป์“ฐ๋Š” ์• ๋“ค์„ ๊ฐ€๋น„์ง€๋ผ ํ•จ.

์ฆ‰, ํž™์— ํ• ๋‹น๋˜์ง€ ์•Š๋Š” ์• ๋“ค์€ ๊ฐ€๋น„์ง€๊ฐ€ ์•„๋‹ˆ๊ณ , ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์˜ ๋Œ€์ƒ์ด ์•„๋‹˜.

๋”ฐ๋ผ์„œ ํž™์— ํ• ๋‹น๋˜๋Š” ์• ๋“ค๋งŒ ์‹ ๊ฒฝ ์“ฐ๋ฉด ๋˜๊ณ , ์–˜๋„ค๊ฐ€ ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ์žƒ์ง€๋งŒ ์•Š์œผ๋ฉดย ๊ฐ€๋น„์ง€๋Š” ์ ˆ๋Œ€ ์ƒ๊ธฐ์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž„.

์ด ์ •๋„๋งŒ ์•Œ๊ณ  ์žˆ์–ด๋„ ๊ฐ€๋น„์ง€๋กœ ์ธํ•œ ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ํฌ๊ฒŒ ์ค„์ผ ์ˆ˜ ์žˆ์Œ.


์‚ฌ์‹ค ์ œ๋Œ€๋กœ ์„ค๋ช…ํ•˜๋ ค๋ฉด ๊ธธ๊ณ  ๋ณต์žกํ•ด์ง€์ง€๋งŒย ๊ทธ๋ƒฅ ๋”ฑ ์ด๊ฑฐ๋งŒ ์•Œ๋ฉด ๋จ.

'class๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ํž™์— ํ• ๋‹น ๋œ๋‹ค.'

ํž™์ด ๋ญ”์ง€, ์–ด๋–ป๊ฒŒ ๊ตด๋Ÿฌ๊ฐ€๋Š”์ง€ ์‚ฌ์‹ค ๋‹น์žฅ ์•Œ ํ•„์š”๋Š”ย ์—†๋‹ค.

์ด๊ฒƒ๋งŒ ์•Œ๊ณ  ๊ฐ€์ž. class๋Š” ์–ด๋””์—์„œ ์ƒ์„ฑํ•˜๋“  ํž™์—๋‹ค ๋•Œ๋ ค ๋ฐ•๊ณ  ์‹œ์ž‘ํ•œ๋‹ค.


๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ๋ณด์ž.

void Update()
{
var tList = new List<int>();

tList.AddRange(otherList);

foreach(var a in tList)
{
//~~
}
}

์œ„ ์ฝ”๋“œ๊ฐ€ ์‹ ์ž…๋“ค์ด ๋งŽ์ด ์‹ค์ˆ˜ํ•˜๋Š” ๋Œ€ํ‘œ ์˜ˆ์‹œ์ž„.

์ € Update๊ฐ€ for-loop๊ฐ€ ๋  ์ˆ˜๋„ ์žˆ๊ณ  ํ”„๋ ˆ์ž„๋งˆ๋‹ค ํ˜ธ์ถœํ•˜๋Š” ์–ด๋–ค ๋‹ค๋ฅธ method๊ฐ€ ๋  ์ˆ˜๋„ ์žˆ๊ณ ..


์•ž์„œ ์„ค๋ช…ํ–ˆ๋“ฏ class๋Š” ํž™์— ํ• ๋‹น๋œ๋‹ค.

List๋Š” C#์—์„œ ์ œ๊ณตํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด์ž ์—ฌ๋Ÿฌ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†ํ•˜๊ณ  ์žˆ๋Š” class์ด๊ณ ย 

๋ณ€์ˆ˜ tList์˜ ์ˆ˜๋ช…์€ย ์„ ์–ธ ์ดํ›„ Update ๋ฃจํ”„ ํ•œ ๋ฒˆ์ด ๋๋‚  ๋•Œ๊นŒ์ง€์ž„.

์ฆ‰ ์ € Update ๋ฃจํ”„๊ฐ€ ๋๋‚˜๋ฉด tList๋Š” ์ˆ˜๋ช…์ด ๋๋‚˜๊ฒŒ ๋˜๊ณ  List์˜ ๋ ˆํผ๋Ÿฐ์Šค๊ฐ€ ํ•ด์ œ๋œ๋‹ค.

๋ฆฌ์ŠคํŠธ๊ฐ€ ํ• ๋‹น ๋ฐ›์€ ํž™ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ณ€์ˆ˜๊ฐ€ ์‚ฌ๋ผ์ง€๊ฒŒ ๋˜๊ณ ย ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๊ฐ€๋น„์ง€๊ฐ€ ๋œ๋‹ค.

๋ฌธ์ œ๋Š” Update๋Š” ์œ ๋‹ˆํ‹ฐ์—์„œ ํ”„๋ ˆ์ž„๋งˆ๋‹ค ํ˜ธ์ถœํ•˜๋Š” event method๋ผ๋Š” ๊ฒƒ์ด๊ณ ,ย ์œ„ ์ฝ”๋“œ๋Š” ํ”„๋ ˆ์ž„๋งˆ๋‹ค ๊ฐ€๋น„์ง€๋ฅผ ์Ÿ์•„๋‚ด๋Š” ์ฝ”๋“œ๋ผ๋Š” ๋ง์ด ๋œ๋‹ค.


๊ทธ๋Ÿผ ์–ด๋–ป๊ฒŒ ๊ณ ์น  ์ˆ˜ ์žˆ์„๊นŒ?

private List<int> tList = new List<int>();
void Update()
{
tList.Clear();
tList.AddRange(otherList);

foreach(var a in tList)
{
//~~
}
}

์ด๋ ‡๊ฒŒ๋งŒ ๊ณ ์ณ๋„ ๋ฆฌ์ŠคํŠธ์˜ ๋ ˆํผ๋Ÿฐ์Šค๊ฐ€ ํ•ด์ œ๋˜๋ฉด์„œ ๊ฐ€๋น„์ง€๊ฐ€ ์ƒ๊ธธ ์ผ์€ ์—†์–ด์ง„๋‹ค.

Update์—์„œ class๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์žˆ์ง€๋„ ์•Š๊ณ ย ๋ณ€์ˆ˜์˜ ์ˆ˜๋ช… ๋˜ํ•œ Update ๋ฃจํ”„์™€๋Š” ๋ฌด๊ด€ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž„.


์บ์‹ฑ์— ๋Œ€ํ•ด์„  ๋‘ ๋ฒˆ์งธ ์˜ˆ์‹œ์—์„œ ๊ฐ„๋‹จํžˆ ์„ค๋ช…ํ•˜๊ฒ ์ง€๋งŒ ์บ์‹ฑ์˜ ํ•œ ์˜ˆ์‹œ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ์‹œ๊ฐ€ ๊ต‰์žฅํžˆ ์ดˆ๋ณด์ ์ด๊ณ  ์ง๊ด€์ ์ด์–ด์„œ ์‰ฝ๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž„.


์ถ”๊ฐ€๋กœ, ์ด ์˜ˆ์‹œ๋งŒ ๋ณด๊ณ  ์บ์‹ฑ ํ•˜๊ณ , Clear๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ์ „ํ•˜๋‹คย ์ƒ๊ฐํ•˜๋ฉด ์•ˆ๋œ๋‹ค.

๋งŒ์•ฝ List์˜ ๋ฉค๋ฒ„๊ฐ€ class๊ณ , ๋ฉค๋ฒ„๋“ค์˜ ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ์ฒด๊ฐ€ย ํ•ด๋‹น ๋ฆฌ์ŠคํŠธ๊ฐ€ ์œ ์ผํ•˜๋‹ค๋ฉด Clear์‹œ ๋Œ€๋Ÿ‰์˜ ๊ฐ€๋น„์ง€๋ฅผ ์Ÿ์•„๋‚ด๊ฒŒ ๋  ๊ฒƒ์ž„.

๋ฌผ๋ก  ์œ„ ์ฝ”๋“œ์—์„  AddRange๋ฅผ ์“ฐ๊ณ  ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์•„ ๋‹ค๋ฅธ ์ž๋ฃŒ๊ตฌ์กฐ์— class๊ฐ€ ์žˆ์–ด์„œ ํ•ญ์ƒ ์•ˆ์ „ํ•˜๊ธด ํ•˜์ง€๋งŒ, ๋‹ค๋ฅธ ๊ฒฝ์šฐ์—๋Š” ์กฐ์‹ฌํ•ด์•ผ ํ•œ๋‹ค.


๋‘ ๋ฒˆ์งธ ์˜ˆ์‹œ์ž„

private IEnumerator CoTest()
{
yield return new WaitForSeconds(0.5f);
}

์œ„ ์ฝ”๋“œ์—์„œ๋„ ๊ฐ€๋น„์ง€๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

์•„๋ž˜์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ, WaitForSeconds๊ฐ€ class์ด๊ธฐ ๋•Œ๋ฌธ์ž„.

public sealed class WaitForSeconds : YieldInstruction
{
internal float m_Seconds;

/// <summary>
/// <para>Suspends the coroutine execution for the given amount of seconds using scaled time.</para>
/// </summary>
/// <param name="seconds">Delay execution by the amount of time in seconds.</param>
public WaitForSeconds(float seconds) => this.m_Seconds = seconds;
}

๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์ง€๋งŒ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ณ€์ˆ˜๊ฐ€ ์—†๊ณ 

์ฝ”๋ฃจํ‹ด์—์„œ WaitForSeconds์˜ ์—ญํ• ์ด ๋๋‚˜๋ฉด ๋ฐ”๋กœ ๊ฐ€๋น„์ง€๋กœ ์žกํ˜€์„œ GC์˜ ๋Œ€์ƒ์ด ๋˜๋Š” ๊ฒƒ.


์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด '์บ์‹ฑ'์ด๋ผ๋Š” ์ˆ˜๋‹จ์„ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค.

ํด๋ž˜์Šค ๋‚ด๋ถ€ ํ˜น์€ ์ „์—ญ์œผ๋กœ ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด ๋†“๊ณ  ๊ฑฐ๊ธฐ๋‹ค๊ฐ€ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š”๊ฑฐ์ง€.

๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ํด๋ž˜์Šค๊ฐ€ ์ˆ˜๋ช…์ด ๋‹คํ•˜๊ฑฐ๋‚˜ ์ „์—ญ ๋ณ€์ˆ˜๋ผ๋ฉด ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋  ๋•Œ ๊นŒ์ง€ ๋ ˆํผ๋Ÿฐ์Šค๊ฐ€ ์žกํ˜€์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋น„์ง€๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค.

private readonly WaitForSeconds wait0Dot5 = new WaitForSeconds(0.5f);

private IEnumerator CoTest()
{
yield return wait0Dot5;
}

๊ฐ„๋‹จํ•˜๊ฒŒ๋Š” ์ด๋Ÿฐ ์‹์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.


์ฝ”๋ฃจํ‹ด์—์„œ ๋‹จ์ˆœํžˆ ์ผ์ • ์‹œ๊ฐ„ ๋ฉˆ์ถ”๋Š” ๊ธฐ๋Šฅ์œผ๋กœ ์‚ฌ์šฉ๋˜๋‹ค ๋ณด๋‹ˆ,ย 

class์ž„์„ ์ธ์ง€ํ•˜์ง€ ๋ชปํ•˜๊ณ ย ๋†“์น  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์ด๊ณ  ์บ์‹ฑ์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ€์ ธ์˜จ ์˜ˆ์‹œ์ž„.


์„ธ๋ฒˆ์งธ๋Š” StartCoroutine์ด๋‹ค.

StartCoroutine์—๋„ ๊ฐ€๋น„์ง€๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

/// <summary>
/// <para>Starts a Coroutine.</para>
/// </summary>
/// <param name="routine"></param>
public Coroutine StartCoroutine(IEnumerator routine)
{
if (routine == null)
throw new NullReferenceException("routine is null");
if (!MonoBehaviour.IsObjectMonoBehaviour((Object) this))
throw new ArgumentException("Coroutines can only be stopped on a MonoBehaviour");
return this.StartCoroutineManaged2(routine);
}

์œ„์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ StartCoroutine์€ Coroutine์ด๋ผ๋Š” class๋ฅผ ๋ฑ‰์–ด๋‚ธ๋‹ค.

๋‹น์—ฐํžˆ ๋ฆฌํ„ด๋œ Coroutine์„ ๋ณ€์ˆ˜๋กœ ์ฐธ์กฐํ•˜๊ณ  ์žˆ์ง€ ์•Š๋‹ค๋ฉด ๊ฐ€๋น„์ง€๋กœ ์žกํžˆ๊ฒŒ ๋  ๊ฒƒ์ž„.

๊ทผ๋ฐ ์‚ฌ์‹ค StartCoroutine๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ๊ทธ๋ƒฅ ๊ฐ€๋น„์ง€๋ฅผ ๊ฐ์ˆ˜ํ•˜๊ณ  ์“ฐ๋Š” ๊ฒฝ์šฐ๊ฐ€ ํ›จ์”ฌ ๋งŽ๋‹ค.

์•„๋ฌด ์ƒ๊ฐ ์—†์ด ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜๋“ค์ด(ํŠนํžˆ ์™ธ๋ถ€ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋˜๋Š” ์œ ๋‹ˆํ‹ฐ api)ย ํž™์— ํ• ๋‹น๋˜๋Š” ์• ๋“ค์„ ์ƒ์„ฑํ•ด์„œ ๋ฑ‰์–ด๋‚ด๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์„ค๋ช…ํ•˜๊ณ  ์‹ถ์—ˆ์Œ.


๋ช‡ ๊ฐ€์ง€ ์˜ˆ์‹œ๋ฅผ ๋“ค์—ˆ๋Š”๋ฐ ์ถฉ๋ถ„ํžˆ ์ž˜ ์„ค๋ช…์ด ๋๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ๋„ค.

์—ฌ๊ธฐ์— ์ถ”๊ฐ€๋กœ ๊ฐ€๋น„์ง€๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์ฝ”๋“œ๋“ค์ด ์ž์ฃผ ์‹คํ–‰๋˜์ง€ ์•Š๋„๋ก ํ•˜๋Š” ๊ฒƒ ์ •๋„๋ฅผ ๊ธฐ์–ตํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค.


์˜ˆ์‹œ๋“ค ์™ธ์—๋„ string ์ด๋‚˜ย ๋‚ด๋ถ€์ ์œผ๋กœ ์ž„์‹œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” method๋“ค ๋“ฑ๋“ฑ.. ์‹ ๊ฒฝ ์“ธ๊ฒŒ ๋งŽ๊ธด ํ•œ๋ฐ,

๊ฒฐ๊ตญ 'ํž™์— ํ• ๋‹น๋œย ๋ฉ”๋ชจ๋ฆฌ์— ๋Œ€ํ•œ ๋ ˆํผ๋Ÿฐ์Šค๊ฐ€ ์—†์–ด์กŒ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋น„์ง€๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.'๋กœย ๋ชจ๋“  ์ƒํ™ฉ์„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.


์ฆ‰ ๊ฐ€๋น„์ง€๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค๋Š” ๊ฒƒ์€ย ๋ชจ๋“  ๊ฐ์ฒด(class)๋ฅผ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ†ต์ œ(๋ณ€์ˆ˜)ํ•˜์— ๋‘๋Š” ํ–‰์œ„์ธ๋ฐ

๊ทธ ์‹œ์ž‘์ด ๋ฐ”๋กœ '๊ฐ€๋น„์ง€๋Š” ํž™์— ํ• ๋‹น๋œ ์• ๋“ค ์ค‘์— ๋ฏธ์•„๊ฐ€ ๋œ ์• ๋“ค์„ ๋งํ•œ๋‹ค.',ย 'class๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ํž™์— ํ• ๋‹น ๋œ๋‹ค.'๋ฅผย ๋จธ๋ฆฌํ†ต์— ๋•Œ๋ ค ๋ฐ•์•„ ๋†“๋Š” ๊ฒƒ์ž„.


์ฝ”๋“œ๋ฅผ ์น˜๋‹ค๊ฐ€ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š”๋ฐย 'class๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ํž™์— ํ• ๋‹น ๋œ๋‹ค.'๋Š” ์‚ฌ์‹ค์ด ๋จธ๋ฆฌํ†ต์— ์žˆ๋‹ค๋ฉด

์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํ•จ์ˆ˜๊ฐ€ ์–ผ๋งˆ๋‚˜ ํ˜ธ์ถœ๋˜๋Š”์ง€, ๊ฐ์ฒด๋ฅผ ์—ฌ๊ธฐ์„œ ์ƒ์„ฑํ•  ํ•„์š”๊ฐ€ ์žˆ๋Š”์ง€,ย ์บ์‹ฑ์„ ํ•˜๋Š” ๊ฒŒ ๋” ๋‚˜์€์ง€, ๊ทธ๋ƒฅ ๊ฐ€๋น„์ง€๋ฅผ ๊ฐ์ˆ˜ํ•˜๋Š” ๊ฒŒ ๋‚˜์€์ง€ ๋“ฑ๋“ฑ์„ ๊ณ ๋ คํ•˜๊ฒŒ ๋  ๊ฒƒ์ž„.


๋ฌผ๋ก  ์—ฌ๋Ÿฌ ์ƒํ™ฉ์„ ๊ณ ๋ คํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค๊ณ  ํ•ด์„œ ์ •๋‹ต์„ ๋‚ด๋ฆด ์ˆ˜ ์žˆ๋Š” ๊ฑด ์•„๋‹ˆ๋‹ค. ์• ์ดˆ์— ์ •๋‹ต์ด ์—†๊ธฐ๋„ ํ•˜๊ณ .ย 

๊ทธ๊ฑด ๊ฒฝํ—˜์ด ํ•ด๊ฒฐํ•ด ์ค„ ์ผ์ž„.


์‚ฌ์‹ค ์–ด๋А ์–ธ์–ด๋ฅผ ํ•˜๋“ , ์–ด๋А ์—”์ง„์„ ์“ฐ๋“  ๊ธฐ๋ณธ ์ค‘์— ๊ธฐ๋ณธ์ธ ๋‚ด์šฉ์ธ๋ฐย ์œ ๋‹ˆํ‹ฐ ์ž์ฒด๊ฐ€ ์›Œ๋‚™ ์‰ฝ๋‹ค ๋ณด๋‹ˆ ๊ทธ๋ƒฅ ๋ฌด์ž‘์ • ๋“ค์ด๋ฐ•๋Š” ๊ฒฝ์šฐ๋„ ๋งŽ๊ณ 

C#์ด managed memory๋ผ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๊ทธ๋ƒฅ ํž™์„ ์“ฐ๋ ˆ๊ธฐํ†ต์ฒ˜๋Ÿผ ์จ๋„ย ์•Œ์•„์„œ ์ •๋ฆฌํ•ด์ค˜์„œ ๋ชจ๋ฅด๊ณ  ๋„˜์–ด๊ฐ€๋Š” ์‚ฌ๋žŒ๋“ค์ด ๋งŽ์€ ๊ฒƒ ๊ฐ™๊ธฐ๋„ ํ•จ.


๊ฐ€๋น„์ง€ ์ตœ์ ํ™” ์ „๋žต์€ ์ด ๊ธ€์— ์ž‘์„ฑ๋œ ๋‚ด์šฉ์ด ํฐ ๋ถ€๋ถ„์„ ์ฐจ์ง€ํ•˜๊ธด ํ•˜์ง€๋งŒ, ์ „๋ถ€๋Š” ์•„๋‹˜

๊ฒฝ์šฐ์— ๋”ฐ๋ผ ๊ฐ€๋น„์ง€๋ฅผ ๊ฐ์ˆ˜ํ•˜๊ณ  ํ”„๋กœ๊ทธ๋ž˜๋จธ ์˜๋„ ํ•˜์— GC๋ฅผ ๋ฐœ์ƒ ์‹œ์ผœ์„œ ์ค‘์š”ํ•œ ์‹œ์ ์— ํ”„๋ ˆ์ž„ ๋“œ๋ž์„ ๋ง‰์„ ์ˆ˜๋„ ์žˆ๊ณ 

๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์•„๋ผ๊ธฐ ์œ„ํ•ด ๊ฐ€๋น„์ง€๋ฅผย ๊ทธ๋ƒฅ ๊ฐ์ˆ˜ํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค.

์ด๋Ÿฐ ๊ฑด ๋ญ ๊ฒฝํ—˜์ด ์Œ“์ด๋ฉด ์•Œ์•„์„œ ํŒ๋‹จํ•˜๊ฒŒ ๋  ๋‚ด์šฉ๋“ค์ด๋ผ ์•ˆ ์ผ์Œ.


์ขƒ๋„ ์—†๋Š”๋ฐ ์“ธ๋ฐ์—†์ด ๊ธธ๊ฒŒ ์“ด ๊ฒƒ ๊ฐ™๋„ค. ์—ด์‹ฌํžˆ ๊ฐœ๋ฐœํ•˜๋„๋ก ํ•˜์ž


*์ „๊ณต ์ง€์‹์ด ํ•„์š”ํ•œ ๋‚ด์šฉ์€ ์ตœ๋Œ€ํ•œ ๋นผ๊ณ  ์“ฐ๋А๋ผ ์ข€ ์–ด๊ธ‹๋‚˜๊ฑฐ๋‚˜ ์ผ๋ฐ˜์ ์œผ๋กœ ์–˜๊ธฐํ•˜๋Š” ๊ฒƒ๊ณผ ๋‹ค๋ฅธ ๋‚ด์šฉ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Œ.

*์ถ”๊ฐ€๋กœ ๊ธ€์— ์“ฐ์ธ ์šฉ์–ด๊ฐ€ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ง์ด ์•„๋‹ ์ˆ˜๋„ ์žˆ๋‹ค. ๊ทผ๋ฐ ๋Œ€์ถฉ ์ด๋ ‡๊ฒŒ ๋งํ•˜๋ฉด ๋‹ค ์•Œ์•„๋“ฃ๋”๋ผ๊ณ