본문 바로가기
관/핫한 유니티 공부

2021 다시 공부하는 유니티 01(클래스와 상속).

by 4차원 박스 2021. 3. 13.

책하나 사서 나름 정리한 내용으로 이 포스팅으로

클래스와 상속에대하여 간단하게 알아갈 수 있습니다.

게임 엔진은 이미 완성된 기반 코드를 제공한다.
겜 엔진의 코드를 재사용하기에 생산성이 올라간다.
이러한 코드 재사용은 겜 개발뿐만 아니라 대부분의 소프트웨어 개발에서 중요하다.

유니티의 컴포넌트 기반 구조를 이해하기 앞서
코드를 재사용하는 전통적 방법인
상속을 알아본다.

상속 = 이미 만들어진 클래스에 새로운 코드와 기능을 덧붙여 
새로운 클래스를 만드는 방법.

이때 기초를 제공하는 클래스 = 부모클래스
부모 클래스를 상속해 확장한 클래스 = 자식 클래스.

클래스 = 묘사할 대상과 관련된 코드를 묶는 틀
예) 플레이어 클래스 = 플레이어와 관련된 코드, 
몬스터 클래스 = 몬스터와 관련된 코드.


어떤 방식으로 사용하는지 다음 이야기로 본다.

1. 몬스터 클래스 class Monster
2. 오크 클래스 class Orc : Monster
3. 오크 대장 클래스. class OrcChieftan : Orc
이렇게 3 클래스의 상속관계 가 있다.

1. 몬스터 클래스 class Monster 는 다음 기능을 가진다.
인공지능
애니메이션
공격과 방어
물리기능
기타 필수 기능

하지만 외형이 없다. Moster 클래스의 역할은 게임속 몬스터로
곧장 사용되는 것이 아니기 때문이다. Monster 클래스는 여러 종류
몬스터 클래스를 할 때 필요한 기초를 제공하는 부모 클래스로 사용된다.
개발자는 이를 통해 여러 파생 몬스터를 Monster 클래스를 확장 하는 방식으로
만든다.

2. 오크 클래스 class Orc : Monster 의 기능
먼저 class Orc : Monster 에서 콜론 ':' 는 오른쪽의 부모클래스를 상속하여
왼쪽의 자식 클래스를 만든다는 의미이다. 
즉 Orc : Monster 는 Monster 클래스를 기반으로 Orc클래스를 만드는 것임.

몬스터를 상속한 오크는 몬스터의 모든 기능을 가진다
따라서 몬스터에서 이미 구현한 기능을 다시 구현할 필요가 없다.
개발자는 다음 같이 오크의 고유 기능을 구현할 수 있게 된다.

초록피부
오크의 애니메이션
오크의 스킬
등등 오크의 고유기능

3. 오크 대장 클래스. class OrcChieftan : Orc 의 기능
위와 같은 방식으로 Orc 클래스를 상속하여 OrcChieftan 클래스를 만든다.
즉, 오크의 모든 기능을 가진 오크대장을 만들기 때문에 새로 구현할 부분이 
많지 않다.

대장모자
새로운 무기와 강력한 스킬
등등 오크 대장의 고유 기능

이러한 방식으로 상속을 이용하여
미리 만들어진 코드를 확장하여 새로운 코드를 작성한다.

하지만 상속은 한계가 있다.

상속에만 의지하면 오히려 코드를 재사용 하기 힘들 수 있다.
하나의 큰 부모 클래스를 상속받아 자식클래스를 새로 확장 할때
필요없는 부모클래스의 기능이 오류(혹은 개발때 불필요한 부분)를 만들 수 있기 때문이다.

즉 개발자는 부모클래스의 기능을 제고하고 에러가 나오지 않도록 코드를 정리하는
추가 작업을 한뒤에야 확장을 할 수 있다.

이를 보면 상속으로 인해 오히려 추가작업이 생겼다.

결론은 다음과 같다.

부모클래스를 만들때 나중에 구현할 자식 클래스에
무엇이 필요한지 처음부터 정확하게 추측하기 힘들고
충돌할 경우도 생길 수 있다. 따러서 상속에만 의존하면
안된다.

1. 오히려 코드 재사용이 힘든경우가 생길 수 있다.
2. 기획자가 새로운 오브젝트를 만들려면 프로그래머 에게 의존해야 한다.

이를 해결하기위해 컴포넌트를 사용한다.

 

이건 다음 포스팅에서 간단하게 다루어 본다.

댓글