유니티 메모장

유니티C# -**중요** 상속과 관련 기능들

WMG1 2023. 2. 14. 16:33
반응형

여러 스크립트가 존재할 때
동일한 부분이 있을 경우 상속 기능이 유효함

공통부분은 상위 스크립트에서 상속받고

겹치지 않는 일부분만 각각의 스크립트에서 사용

해당 기능의 부모 스크립트는 미완성 클래스이므로
다른 객체에 직접 추가시킬 수 없음
(해당 클래스의 자식클래스가 기능을 완성시키며 객체에 할당됨)
(그러므로 부모에선 스타트,업데이트 함수 실행 절대 안되므로 지움)

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를 넣어도 상관없으나
함수의 용도에따라 구분하여 사용할것


반응형