유니티

유니티 C# 프로그래밍 기초 - 클래스 생성 및 상속

nock_ji 2022. 4. 5. 22:45

유니티 C# 프로그래밍 기초

 

 

 

[ Class 클래스 생성 ] & [ 상속 ]

 

 

 


[ Class 클래스 ]

하나의 사물(오브젝트)와 대응하는 로직

최상단 위쪽에 위치합니다

 

 

'class'는 클래스 선언에 사용하는 키워드 입니다

class box_01

 

 

 

  • 기본 선언 형식
[접근제어자] class [클래스 이름]{

}

 

 


 

[ 새로운 C# 스크립트 생성 ]

 

클래스 이름을 Actor로 해보겠습니다

 

public class Actor : MonoBehaviour
{
    int id;
    string name;
    string title;
    string weapon;
    float strength;
    int level;

    string Talk()
    {
        return "대화를 걸었습니다";
    }

    string HasWeapon()
    {
        return weapon;
    }

    void LevelUp()
    {
        level = level + 1;
    }
}

 

 

 

 

기존에 있었던 box_01 클래스 void Start 내부에서 Actor 클래스를 사용해보겠습니다

 

class box_01

 

Actor 클래스를 box_01 클래스에서 하나의 변수로 만들었습니다.

이것을 " 인스턴스화 " 라고 합니다.

 

  • 인스턴스 : 정의된 클래스를 변수 초기화로 실체화함
  • public : 외부 클래스에 공개로 설정하는 접근자

Actor 클래스는 public 접근자를 가지고 있어서 어디에서나 변수로 사용할 수 있습니다

 

 

 

 

class box_01

player . 

-> 점을 찍었을 때 Actor 클래스에서 만들었던 변수가 나와야하는데 나오지 않습니다

 

 

 

 

Actor 클래스를 확인해보겠습니다

class Actor

 

보이지 않지만 각각 변수 앞에 private 접근자가 생략되어 있습니다. 왼쪽과 오른쪽은 같은 로직입니다.

  • private : 외부클래스에 비공개로 설정하는 접근자

 

 

 

 

즉, 다른 클래스에서 player 멤버 변수에 접근하기 위해서 public을 변수 앞에 모두 써줍니다. 

 

class Actor

 

Actor 클래스의 변수들을 모두 오픈해주고, 다시 box_01 클래스에서 선언해보도록 하겠습니다 

 

 

 

 

class box_01

 

Actor 클래스에 있는 멤버 변수를 가지고 와서 출력하도록 했습니다

.

.

.

.

결과

 


 

Actor 클래스를 만들어보았습니다. 여기서 Actor는 용사일 수도, 몬스터인 슬라임, 악마, 사막뱀일 수도 있습니다.

그럼 이제 Actor클래스를 가지고 또 다른 클래스를 만들 수 있는데,

이것을 " 상속 "이라고 합니다. 

 

 

[ 클래스 상속 하기 ]

 

Player이름을 가진 클래스를 새로 만들겠습니다

 

 

Monobehaviour 자리에 Actor를 넣어주고 로직을 작성합니다 

 

 

Player 클래스는 여기까지 작성하고, box_01 클래스로 돌아가 수정해보겠습니다

box_01 클래스의 'Actor'를 모두 'Player'로 수정합니다

 

빌드하면 아무 오류가 나지 않습니다 !

.

.

.

결과

 

 

즉, Actor 클래스 안에 있는 Player 변수, 함수를 Player 클래스가 그대로 물려받아서 사용할 수 있습니다.

여기서 부모클래스는 Actor 클래스, 자식클래스는 Player 클래스 입니다. 상속 관계를 이루고 있습니다. 

 

 

** 자식 클래스는 부모 클래스에 있는 모든 멤버 변수, 함수를 사용할 수 있으면서 자신의 새로운 멤버 변수와 함수를 사용할 수 있습니다

 


 

public class test : Monobehaviour
{
}

 

C# 스크립트를 생성하면 자동으로 붙는 'Monobehaviour'은 유니티 게임 오브젝트 클래스로,

유니티에서 사용할 모든 로직이 담겨있습니다.