유니티C# -**중요** 상속과 관련 기능들
여러 스크립트가 존재할 때
동일한 부분이 있을 경우 상속 기능이 유효함
공통부분은 상위 스크립트에서 상속받고
겹치지 않는 일부분만 각각의 스크립트에서 사용
해당 기능의 부모 스크립트는 미완성 클래스이므로
다른 객체에 직접 추가시킬 수 없음
(해당 클래스의 자식클래스가 기능을 완성시키며 객체에 할당됨)
(그러므로 부모에선 스타트,업데이트 함수 실행 절대 안되므로 지움)
public class HandController : MonoBehaviour->
public class HandController : CloseWeaponController
MonoBehaviour 부분에 상속의 부모 스크립트를 입력해주면됨
ㅡㅡㅡㅡ
해당 기능을 사용한 후
자식 스크립트에게만 변수를 사용하고 싶을 때
public 이나 private 가 아닌
protected 를 사용해준다
ㅡㅡㅡㅡ
abstract 미완성 함수
부모 클래스에서 자식클래스에서 완성되도록 미완성인채로
함수를 둘 수있게 됨
이 경우
public abstract class 로 작성하여 미완성 클래스로 만든 뒤
protected abstract IEnumerator HitCoroutine();
함수abstract를 추가하여 미완성 함수를 지정하면 된다.
[[팁]]
미완성 함수가 있을 시
자식 클래스에 가서
public class 스크립트이름
의 스크립트이름 ->우클릭->빠른작업 및 리팩터링->재정의 생성
->해당 함수만 체크 과정을 거치면
알아서 override함수를 작성해 준다.
자동 작성된 내용물은 지우고
완성 될 함수 내용을 기입함
(interface 개념은 Multi-abstarct와 비슷한 개념임 추후 검색을 통해 알아볼 것)
ㅡㅡㅡㅡ
virtual 가상함수
완성함수지만 추가 편집이 가능한 함수
(자식 클래스에서 호출 후 수정 가능한 함수)
ex)
public virtual void 함수이름() //혹은// protected virtual void 함수이름() 으로 작성가능
이런식으로 작성가능
이후 자식 클래스에서
abstract 와 동일한 과정으로 재정의 생성하여주면
public override void 함수이름(파라미터)
{
base.함수이름(파라미터); // 공통 분모 포함시키기
추가 수정사항 기입
}
abstract와 다르게 자동 작성된 base.함수이름(파라미터); // 공통 분모 포함시키기
부분은 지우지않아야 부모 함수의 내용을 받아올 수 있다.
[[팁2]]
가상함수가 있을 시
자식 클래스에 가서
override 엔터 후 비주얼 스튜디오 자동완성 부분을 보면
부모 클래스에서 적어놓은 가상함수를 빠르게 완성해준다.
이 경우 함수 내용물로 base.가상함수이름(); 이 들어가는데
하단에 이 함수에 추가로 사용할 코드를 기입하면 된다.
/////해당 메모의 public 부분에 protected를 넣어도 상관없으나
함수의 용도에따라 구분하여 사용할것