์ด๊ฒƒ๋„ ์ผ์ง€ ๋น„์Šทํ•œ๊ฑด๊ฐ€?
์•„๋ฌดํŠผ ๊ฐค ํ™˜๊ธฐ๋ฅผ ์œ„ํ•ด์„œ ๋ณธ์ธ์Ÿ์ด ๋‰ด๋น„๋•Œ ์• ์šฉํ–ˆ๋˜ ์นด์šดํŒ… ๊ธฐ๋ฒ•์„ ์†Œ๊ฐœํ•˜๋ คํ•จ
์ง€๊ธˆ๋„ ๊ฐ€๋” ์“ฐ๊ณ  ์žˆ๊ณ 


๋‚ด๊ฐ€ ์ด๋ฆ„์„ ์นด์šดํŒ… ๊ธฐ๋ฒ•์ด๋ผ ๋ถ™์—ฌ๋†“๊ธด ํ–ˆ์ง€๋งŒ ์‚ฌ์‹ค ๋‹ค๋ฅธ๋ฐ์„œ ๋‹ค๋ฅธ ์ด๋ฆ„์œผ๋กœ ์“ฐ์ด๊ณ  ์žˆ์„์ง€๋„ ๋ชจ๋ฅด๊ณ ย 
์—„์ฒญ ๋น„ํšจ์œจ์ ์ธ ์ฝ”๋“œ์ผ์ˆ˜๋„ ์žˆ์œผ๋‹ˆ ์ฐธ๊ณ ๋งŒ ํ•ด์ค˜..
์•„๋ฌดํŠผ ๊ธฐ๋ณธ์ ์ธ ๊ฐœ์š”๋Š” ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ์ฒดํ™” ํ–ˆ๋‹ค๋Š” ๋А๋‚Œ?
ํƒฌํ”Œ๋ฆฟ์€ ์ด๋Ÿฌํ•˜๋‹ค

public class Test : MonoBehaviour
{
ย  ย  public Counting count;
ย  ย  public void StartCounting()
ย  ย  {
ย  ย  ย  ย  count = new Counting(this, 3);
ย  ย  }
ย  ย  public void EndCounting()
ย  ย  {
ย  ย  ย  ย  count = null;
ย  ย  }
}

๋ฉ”์ธ ํด๋ž˜์Šค


public class Counting {
ย  ย  int count;
ย  ย  Test test;

ย  ย  public Counting(Test test, int count)//์ƒ์„ฑ์ž
ย  ย  {
ย  ย  ย  ย  this.count = count;
ย  ย  ย  ย  this.test = test;
ย  ย  }
ย  ย  public void AddCount()//์นด์šดํŠธ ๊ฐ์†Œ
ย  ย  {
ย  ย  ย  ย  count++;
ย  ย  ย  ย  CheckCount();
ย  ย  }
ย  ย  public void SubCount()//์นด์šดํŠธ ์ถ”๊ฐ€
ย  ย  {
ย  ย  ย  ย  count--;
ย  ย  ย  ย  CheckCount();
ย  ย  }
ย  ย  public void CheckCount()//์นด์šดํŠธ ๋ถ„๊ธฐ ํ™•์ธ
ย  ย  {
ย  ย  ย  ย  if (count <= 0)
ย  ย  ย  ย  {
ย  ย  ย  ย  ย  ย  test.EndCounting();
ย  ย  ย  ย  }
ย  ย  }
}

์นด์šดํŒ… ํด๋ž˜์Šค

๋งค์šฐ ๊ฐ„๋‹จํ•˜๋‹ค
๊ทธ๋ƒฅ ์ด Counting ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•ด์„œ ๋Š˜๋ฆฌ๊ธฐ๋ฅผ ์›ํ•˜๋ฉดย AddCount ์ค„์ด๊ธฐ๋ฅผ ์›ํ•˜๋ฉดย SubCount๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ๋˜๊ณ 
์›ํ•˜๋Š” ๋ถ„๊ธฐ๋ฌธ์„ย CheckCount()์•ˆ์— ๋„ฃ์œผ๋ฉด ์•Œ์•„์„œ ์‹คํ–‰๋œ๋‹ค.

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

public class Test : MonoBehaviour
{
ย  ย  public int ?_count;
ย  ย  public int ?count {
ย  ย  ย  ย  get
ย  ย  ย  ย  {
ย  ย  ย  ย  ย  ย  if (_count.HasValue)
ย  ย  ย  ย  ย  ย  {
ย  ย  ย  ย  ย  ย  ย  ย  return _count;
ย  ย  ย  ย  ย  ย  }
ย  ย  ย  ย  ย  ย  else
ย  ย  ย  ย  ย  ย  {
ย  ย  ย  ย  ย  ย  ย  ย  Debug.Log("Value is Null");
ย  ย  ย  ย  ย  ย  ย  ย  return null;
ย  ย  ย  ย  ย  ย  }
ย  ย  ย  ย  }
ย  ย  ย  ย  set
ย  ย  ย  ย  {
ย  ย  ย  ย  ย  ย  _count = value;
ย  ย  ย  ย  ย  ย  if (value <= 0)
ย  ย  ย  ย  ย  ย  {
ย  ย  ย  ย  ย  ย  ย  ย  Debug.Log("EndCounting");
ย  ย  ย  ย  ย  ย  ย  ย  _count = null;
ย  ย  ย  ย  ย  ย  }
ย  ย  ย  ย  }
ย  ย  }
}

๊ฑฐ์˜ ๋˜‘๊ฐ™์€ ๊ธฐ๋Šฅ์„ ํ•˜๊ณ ์žˆ๋Š” ํ”„๋กœํผํ‹ฐ๋‹ค.
๊ฐ’์ด 0 ์ดํ•˜๊ฐ€ ๋˜๋ฉด ๋„๋กœ ์ดˆ๊ธฐํ™”๋˜๊ณ  ์นด์šดํŒ…์ด ๋๋‚œ๋‹ค.

๊ทธ๋Ÿผ์—๋„ ๋ณธ์ธ์€ ์•ž์—์„œ ๋งํ–ˆ๋˜ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์“ฐ๋Š”๋ฐ
์ฒซ๋ฒˆ์งธ๋กœ ์ผ๋‹จ ๋„๋Ÿฌ๋ธ” ํƒ€์ž…์€ ๊ท€์ฐฎ๋‹ค.
ํ˜•๋ณ€ํ™˜๋„ ํ•ด์ค˜์•ผํ•˜๊ณ .. ์ž˜ ์•ˆ์“ฐ๋Š” ํƒ€์ž…์ด๋‹ค๋ณด๋‹ˆ ์ข€ ๊บผ๋ ค์ง„๋‹ค.

๋ฐ˜๋ฉด ๊ฐ์ฒด๋ฒ„์ „์€ ์ดˆ๊ธฐํ™”์™€ ์ƒ์„ฑ์ด ๋งค์šฐ ๊ฐ„๋‹จํ•˜๋‹ค.
๋‘๋ฒˆ์งธ๋กœ ๊ฐ์ฒด๋ผ์„œ ๊ด€๋ฆฌ๊ฐ€ ํŽธํ•˜๊ณ  ๊ฐ€๋…์„ฑ์ด ์ข‹๋‹ค.
๋‚ด๋ถ€์— ํ•จ์ˆ˜ ๋‹ค ๋•Œ๋ ค๋ฐ•์„์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœํผํ‹ฐ๋ณด๋‹ค ๋ณด๊ธฐ ํŽธํ•˜๊ณ  ๊ด€๋ฆฌ๋„ ์‰ฝ๋‹ค.
๋˜ํ•œ ์ƒ์„ฑ์ž๋„ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•œ ์ ์ด ๊ฐ€์‚ฐ์ 


์ด ๊ฐ์ฒด๋Š” ๋ณธ์ธ์ด ํ”„๋กœํผํ‹ฐ๋ฅผ ๋ชจ๋ฅผ๋•Œ ์ƒ๊ฐํ•ด๋‚ธ ๋ฐฉ๋ฒ•์ด๋‹ค.
ํ™”๋ฉด์ƒ์— ์›€์ง์ด๋Š” ์˜ค๋ธŒ์ ํŠธ๋“ค์˜ ๊ฐœ์ˆ˜๋ฅผ ์„ธ๊ณ  ๋ชจ๋“  ์˜ค๋ธŒ์ ํŠธ๋“ค์ด ๋ฉˆ์ท„์„๋•Œ ์ด๋ฒคํŠธ ์‹คํ–‰์ด ํ•„์š”ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ฐฉ๋ฒ•์„ ์ฒ˜์Œ ์ป์—‡๋‹ค.
๋‚˜ ์ฒœ์žฌ์•„๋‹˜? ใ…Žใ…Ž ํ–ˆ์—‡๋Š”๋ฐ ๋‹ค๋“ค ํ”„๋กœํผํ‹ฐ๋กœ ์ž˜๋งŒ ์“ฐ๊ณ  ์žˆ๋”๋ผ๊ณ ..

์•„๋ฌดํŠผ ๋‚œ ์ต์ˆ™ํ•˜๊ธฐ๋„ ํ•˜๊ณ  ์˜ค๋ž˜์จ์„œ ์•„์ง๋„ ๋ญ”๊ฐ€ ๊ธฐ๋Šฅ์ด ๋งŽ์ด ๋“ค์–ด๊ฐ€์•ผ ํ•˜๋Š” ํ”„๋กœํผํ‹ฐ์ผ ๊ฒฝ์šฐ ์œ„์˜ ๋ฐฉ๋ฒ•์„ ์• ์šฉํ•œ๋‹ค.
ํ˜น ํ”„๋กœํผํ‹ฐ๊ฐ€ ๋ฏธ์ˆ™ํ•œ ๋‰ด๋น„์žฅ์ด๋ผ๋ฉด ํ•œ๋ฒˆ ์ธ„๋ผ์ด
๋ญ ํ„ด์ œ ๊ฒŒ์ž„์˜ ๋ฒ„ํ”„ ์‹œ๊ฐ„์ด๋ผ๋˜์ง€.. ์ด์•Œ์˜ ์ถฉ๋ŒํšŸ์ˆ˜๋ฅผ ์ฒดํฌํ•œ๋‹ค๋˜์ง€.. ๋‹ค๋งŒ hp๊ด€๋ฆฌ๊ฐ™์ด ๊ฐ’์˜ ๋ฒ”์œ„๊ฐ€ ๋„“๊ณ  ํ•œ๋ฒˆ์— ํฐ ๊ฐ’์ด ๋ฐ”๋€Œ๋Š” ๊ฑฐ๋ฉด ํ”„๋กœํผํ‹ฐ๊ฐ€ ์ข‹๋‹ค.