241202(월) [유한 상태 머신 적용전 필요한 학습 정리]
유한 상태 머신을 이용하여 이동 관련 로직을 적용하기전에
사전에 꼭 알아야 할 or 강의에 포함된 내용을 정리해봤다.
1. Animator.StringToHash
선언은 public static int StringToHash (문자열 이름);로 한다.
문자열은 비싼 연산값(단어 하나하나가(char) 데이터를 차지함)이므로
StringToHash를 통해 문자열 파라미터를 정수값으로 바꾸면 데이터 최적화에 도움이 된다.
2. 상속
기존의 클래스(부모 클래스 또는 상위 클래스)를 확장 또는 재사용하여 새로운 클래스를 만듬
클래스 간의 계층구조를 표현하여 코드 구조를 파악할 수 있음
C#에서는 다중상속을 지원하지 않고 단일상속만 지원한다.
단, 인터페이스는 다중상속을 지원한다.
3. 추상클래스와 인터페이스
추상클래스(abstract class)
추상클래스는 직접적으로 인스턴스 생성 불가능
상속을 위한 베이스 클래스
자식클래스에서 반드시 구현되어야 함
인터페이스(Interface)
클래스가 구현해야 하는 멤버를 정의
인터페이스는 클래스가 아니다.
추상클래스와 마찬가지로 인터페이스를 클래스가 구현하고자 하면 반드시 모든 인터페이스 멤버를 구현해야함
4. 가상메서드(Virtual), 추상클래스(Abstract), 인터페이스(Interface)를 사용하는 경우
코드의 재사용성을 위해 상속을 사용한다.
그러나 필요에 따라 자식클래스에서 재정의할 경우가 생긴다.
이때 선택적으로 재정의 하는 경우(자식클래스에서 변경 또는 확장할 경우)
가상메서드를 사용한다.
만약, 선택이 아닌 필수로 재정의를 해야한다면 가상메서드가 아닌 추상클래스를 사용한다.
추상클래스는 완성되지 않은 클래스로 인스턴스 생성이 불가능하고 추상 메서드를 포함할 수 있다.
추상클래스는 추상 메서드 선언은 가능하지만, 구체적인 구현은 불가능(자식클래스만 가능)하다.
abstract를 통해 선언했다면 override를 통해 반드시 재정의를 해야한다.
이렇게보면 하나의 클래스, 하나의 자식클래스
즉, 단일상속은 가상메서드, 추상클래스로 2개로 되지만
여러가지 공통된 기능을 자식클래스에서 구현하고자 할 경우(다중상속이 필요한경우)
가상메서드, 추상클래스로 클래스 개수를 늘려서 하는 방식으로 진행하면
클래스간 관계도 복잡해질뿐더러 코드가 복잡해지는 문제가 발생한다.
이렇게되면 유지보수성도 떨어진다.
이런경우 인터페이스를 사용한다.
여러개의 인터페이스를 다수의 기능을 조합하여 사용할 수 있다.
5. ScriptableObject
데이터를 저장하고 관리하는 컨테이너, 저장소다.
게임에서 재사용 가능한 데이터와 설정을 저장하는데 활용한다.
코드와 데이터를 분리하여 코드 가독성을 높히고 관리를 쉽게할 수 있다.
ScriptableObject를 사용하려고 하는 클래스는
반드시 ScriptableObject를 상속받아야한다.
CreateAssetMenu 속성을 사용하여 ScriptableObject를 상속받은 데이터가 저장된 클래스를 간편하게 생성할 수 있다.