유니티 상속 예제

그렇다면 어느 것이 더 좋을까요? 나는 중소 사물 상속에 대한 당신이 원하는 정확히 알고있는 경우 코드 중복의 일부를 피할 수 있다고 생각, 이는 거의 sofware 개발에서 발생하지 않습니다. 반면에 컴포지션은 경우에 따라 약간의 과잉 이외일 수 있지만 작업을 완료하고 많은 코드 재사용이 가능할 수 있으므로 때로는 필수적입니다. 그래서 당신은 모든 시간을 상속하고있다! 어떠세요… 그러나 우리가 더 원한다고 말 … 상속을 보다 의미 있는 방법으로 사용하여 워크플로를 보다 효율적으로 만드는 방법을 살펴보겠습니다. 컴포지션을 사용하면 매우 모듈식캡슐화된 코드베이스를 만들 수 있으며, 이를 통해 확장되고 매우 유연한 방식으로 재사용할 수 있습니다. Unity의 구성 요소 모델은 훌륭하며, Unity에 대항하기보다는 함께 작업할 가치가 있습니다. 그러나 앞서 말했듯이, 모든 코드를 멋지게 만드는 실버 글머리 기호는 아무도 없으며 컴포지션이 사용하기에 가장 좋은 도구가 아닌 경우가 많이 있습니다. 마찬가지로 상속을 올바르게 사용할 때 매우 유용한 도구입니다. 유일한 문제는 상속의 관점에서 모든 것을 보는 (겉보기에 널리 퍼진) 경향입니다. 핵심 원칙은 가능하면 모든 메서드 매개 변수 및 반환 값의 형식은 클래스가 아닌 인터페이스여야 한다는 것입니다. 이렇게 하면 API가 훨씬 더 유연하고 강력해집니다. 대부분의 경우 메서드와 호출자는 해당 개체의 실제 클래스를 알거나 걱정할 이유가 없어야 합니다.

API가 구현 세부 정보에 대해 독립적이면 아무 것도 손상시키지 않고 컴포지션과 상속 간에 자유롭게 전환할 수 있습니다. 클래스로 표시되는 다양한 생물이 있고 함수로 표시되는 기능이 있다고 가정해 보겠습니다. 예를 들어 새에게는 토크(), 플라이() 및 똥()이 있습니다. 클래스 오리는 클래스 버드에서 상속, 모든 기능을 구현. 상속을 사용하여 모든 것을 해결해야 한다는 생각에 매수한다면, 비계층적 구조를 계층 구조처럼 보이게 하기 위해 많은 시간과 노력을 들여야 합니다. 뿐만 아니라 코드베이스의 디자인은 일반적으로 이해하지 못했을 때보다 더 나빠질 것입니다 . 가장 좋은 것은 이들의 조합을 사용하는 것입니다. 세상을 모델링하는 내 OO 마음에서 사람들은 몇 가지 깊은 예를 말할 수 있습니다. 영혼은 마음을 통해 몸과 접하고 있습니다. 마음은 영혼 (일부는 지성을 고려) 몸에게 발행 명령 사이의 인터페이스입니다.

몸에 대한 마음의 인터페이스는 기능적으로 말하기, 모든 사람들에게 동일합니다. Unity 내에서 클래스를 만들 때 MonoBehaviour를 기본값으로 `확장`합니다(`extend`는 `상속`이라고 말하는 또 다른 방법이며 이 게시물에서 는 상호 교환적으로 사용됩니다). 일반적으로 Unity에서 ”공개” 또는 ”비공개” 레이블은 특정 스크립트(예: Inspector 또는 다른 스크립트)에서 값을 변경할 수 있는지 여부를 지정합니다. 블로그를 사랑. 좋은 게시물하지만 상속을 제한하는 섹션은 실제로 `봉인된`부분을 사용할 위치를 설명하지 않습니다.