1. ํ•œ ์Šคํฌ๋ฆฝํŠธ์—์„œ ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์„ ๋‹ด๋‹นํ•˜๊ณ  ์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด์„œ ํ”Œ๋ ˆ์ด์–ด๋ฅผ ์ด๋™์‹œํ‚ค๋Š” ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค๋ฉด, ํ”Œ๋ ˆ์ด์–ด๋ฅผ ์ด๋™์‹œํ‚ค๋Š” ๋กœ์ง์—์„œ ์ถฉ๋Œ์ฒ˜๋ฆฌ, ์ฒด๋ ฅ ๊ด€๋ฆฌ, ๋“ฑ ์—ฌ๋Ÿฌ ์ผ์„ ๋‹ด๋‹นํ•˜๊ณ  ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ์—ฌ๋Ÿฌ ์Šคํฌ๋ฆฝํŠธ, ์—ฌ๋Ÿฌ ์ปดํฌ๋„ŒํŠธ๋กœ ๋‚˜๋ˆ ์„œ ํ•˜๋Š” ๊ฑธ ์ถ”์ฒœํ•œ๋‹ค.ย 

์˜ˆ๋ฅผ ๋“ค๋ฉด, PlayerMovement, PlayerHealth, PlayerAnimation, PlayerInteraction ์ด๋ ‡๊ฒŒ ๋‚˜๋ˆ„๋Š” ๊ฑธ ์ถ”์ฒœํ•œ๋‹ค. PlayerMove, PlayerJump, PlayerGroundCheck ์ด๋Ÿฐ ์‹์œผ๋กœ ๋„ˆ๋ฌด ์ž์„ธํžˆ ๋‚˜๋ˆ„์ง€ ์•Š์•„๋„ ๋œ๋‹ค.ย 


2. public static

๋‹ค๋ฅธ ์Šคํฌ๋ฆฝํŠธ์˜ ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๊ณ  public static์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฑด ๋งค์šฐ ์•ˆ ์ข‹๋‹ค. GetComponent()๋ฅผ ์‚ฌ์šฉํ•ด์„œ, ์ปดํฌ๋„ŒํŠธ๋ฅผ ์บ์‹ฑ(๋ณ€์ˆ˜ ์ €์žฅ)๋ฅผ ์ €์žฅํ•ด์„œ component.MyField ์ด๋Ÿฐ ์‹์œผ๋กœ ์ ‘๊ทผํ•˜๋Š” ๊ฑธ ์ถ”์ฒœํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•œ ์ปดํฌ๋„ŒํŠธ์—์„œ ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ์˜ ๋ณ€์ˆ˜๋ฅผ ์ž์ฃผ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ๋„ ์ข‹์ง€ ์•Š๋‹ค. ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๊ฒŒ ํ•ด์„œ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์ข‹๋‹ค.


3. switch

switch(WeaponType)

{

ย  ย  case Weapon.Pistol:

ย  ย  ย  ย  name = "glock17";

ย  ย  ย  ย  fireRate = 0.2f;

ย  ย  ย  ย  damage = 10f;

ย  ย  ย  ย  break;

ย  ย  case Weapon.Rifle:

ย  ย  ย  ย  name = "ak47";

ย  ย  ย  ย  fireRate = 0.1f;

ย  ย  ย  ย  damage = 20f;

ย  ย  ย  ย  break;

ย  ย  case Weapon.Sniper:

ย  ย  ย  ย  name = "awp";

ย  ย  ย  ย  fireRate = 1.5f;

ย  ย  ย  ย  damage = 70f;

ย  ย  ย  ย  break;

ย  ย  ...

}


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

class Gunย 

{

ย  ย  ย public string name;

ย  ย  ย public float damage;

ย  ย  ย public float fireRate;

ย  ย  ย //์ƒ์„ฑ์ž

}ย 

์ด๋ ‡๊ฒŒ ๋งŒ๋“ค๊ณ 

public Gun pistol = new Gun("glock17", 10f, 0.2f);

์ด๋ ‡๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒŒ ํ›จ์”ฌ ๋‚ซ๋‹ค.

๋˜ ์•„์ดํ…œ์œผ๋กœ ์˜ˆ์‹œ๋ฅผ ๋“ค๋ฉด,ย 

public class ItemStack

{

ย  ย  public Item Item;

ย  ย  public uint Count;

ย  ย  public ItemType ItemType;

ย  ย ย 

ย  ย  public IInteractive Interaction;

ย  ย ย 

ย  ย  public ItemStack(Item item, uint count, ItemType type)

ย  ย  {

ย  ย  ย  ย  Item = item;

ย  ย  ย  ย  Count = count;

ย  ย  ย  ย  ItemType = type;

ย  ย  ย  ย ย 

ย  ย  ย  ย  switch(type)

ย  ย  ย  ย  {

ย  ย  ย  ย  ย  ย  case ItemType.Food:

ย  ย  ย  ย  ย  ย  Interaction = new Food();

ย  ย  ย  ย  ย  ย  break;

ย  ย  ย  ย  ย  ย ย 

ย  ย  ย  ย  ย  ย  case ItemType.Weapon:

ย  ย  ย  ย  ย  ย  Interaction = new Weapon();

ย  ย  ย  ย  ย  ย  break;

ย  ย  ย  ย  ย  ย ย 

ย  ย  ย  ย  ย  ย ย 

ย  ย  ย  ย  ย  ย  case ItemType.Item:

ย  ย  ย  ย  ย  ย  Interaction = new Item();

ย  ย  ย  ย  ย  ย  break;

ย  ย  ย  ย  }

ย  ย  }

}

์ด๋ ‡๊ฒŒ ํ•˜์ง€ ๋ง๊ณ 

public class ItemStacm

{

ย  ย  public abstract void Use();

}


public class Wepaon : Item

{

ย  ย  public int Damage

ย  ย ย 

ย  ย  public override void Use()

ย  ย  {

ย  ย  ย  ย  //๊ณต๊ฒฉ

ย  ย  }

} ์ด๋ ‡๊ฒŒ ์ƒ์†์„ ์ด์šฉํ•ด์„œ ํ•˜๋Š” ๊ฑธ ์ถ”์ฒœํ•œ๋‹ค.


์ฝ”๋“œ๊ฐ€ ๋ช‡ ์ฒœ ์ค„ ์•ˆ ๋„˜์–ด ๊ฐ€๊ธฐ๋ฅผ.