C07_3_Player GetPlayer(int type) { C07_3_Player player = null; switch (type) { case 0: player = new C07_3_Knight(); break; case 1: player = new C07_3_Archor(); break; case 2: player = new C07_3_Mage(); break; } return(player); }
void Test03() { C07_3_Player player = GetPlayer(1); bool isKnight = player is C07_3_Knight; //'변수 is 클래스'의 형태를 bool 값으로 반환한다. 변수가 해당 클래스거나 해당 클래스의 자식 클래스면 true 이다. if (isKnight) { Debug.Log("기사 생성"); } else if (player is C07_3_Archor) { Debug.Log("궁수 생성"); } C07_3_Player player2 = GetPlayer(2); //Player로 불러왔으므로 아직 Mage에만 존재하는 mp 변수는 쓸 수 없다. player2.Attack(); //Player 클래스에 존재하는 함수나 변수는 조작 가능하다. C07_3_Mage mage = player2 as C07_3_Mage; //자식 클래스로 캐스팅할 수 있다. Mage를 가지고 있지 않다면 Null Reference 에러가 뜬다. mage.mp = 100; //Mage로 불러왔으니 Mage에만 존재하는 변수를 조작할 수 있다. Debug.Log($"마법사의 마나: {mage.mp}"); }