[C# Unity] 컴포넌트란?

Arthur·2023년 6월 19일
0
post-thumbnail
post-custom-banner

공부하게 된 계기


게임 서버 프로그래머가 되기 위해서 인프런에 Rookiss님의 유니티 강의를 듣고 있습니다.

처음에는 최소한의 UI를 유니티로 만들고 게임 서버 쪽을 더 공부할려고 생각 했었습니다.
그런데 강의를 들으면서 공부 하다보니까 쉽게 넘기면 안될 개념들이 나와서 이렇게 글을 작성하게 되었습니다.



웹 개발에서의 컴포넌트


컴포넌트라는 단어는 웹 개발에서도 프론트엔드 개발자 분들이 자주 사용하는 것을 들었습니다.


컴포넌트(Component)란 프로그래밍에 있어 재사용 및 교체가 가능한 부품이다.

웹 개발에서 컴포넌트는 재사용 가능한 독립적인 모듈이며, 보통 UI를 만드는데 사용됩니다.
컴포넌트 기반 아키텍처는 유지보수와 확장성을 향상시켜줍니다.


Unity 공식 문서에서는 컴포넌트가 게임 오브젝트의 작동과 관련한 부품이라고 합니다.
이런 컴포넌트를 이해하기 위해 게임 오브젝트를 먼저 이해하는 것을 권장하고 있습니다.
그래서 게임 오브젝트부터 정리해봤습니다.


게임 오브젝트(Game object)란?


Unity의 기초적인 오브젝트로 캐릭터, 소품, 배경을 나타냅니다.
독자적으로 많은 것을 하기보다는 실질적 기능을 수행하는 컴포넌트(Components)의
컨테이너 역할을 합니다.


  • 게임 오브젝트는 여러 다양한 컴포넌트의 컨테이너입니다.
  • 기본적으로 모든 게임 오브젝트는 자동으로 Transform 컴포넌트를 갖습니다.
    * Transform : 게임 오브젝트가 어디에 위치하고 어떻게 회전하고 스케일될지 지시

유니티에서는 컴포넌트를 게임 오브젝트에 추가할 수 있습니다.
위 예시 사진은 Transform 컴포넌트만 추가되어 있는 게임 오브젝트입니다.


컴포넌트(Component)란?


게임에서 오브젝트와 동작에 관한 기본 구성 요소라고 할 수 있다.
컴포넌트는 모든 게임 오브젝트의 작동과 관련한 부품입니다.

  • 컴포넌트는 모든 게임 오브젝트의 작동과 관련한 부품
  • 선택된 게임 오브젝트에 어떤 컴포넌트가 연결되어 있는지 보려면 항상 인스텍퍼를 사용하면 됩니다.

유니티 게임에서의 컴포넌트의 개념은 위와 같습니다.
컴포넌트라는 용어의 자체 정의를 더 깊게 보고 싶은 분은 '컴포넌트 정의 - 컴포넌트란 무엇인가?' 링크를 클릭해서 보시면 좋을 것 같습니다.

컴포넌트라는 용어 자체가 객체 지향 원칙하고 상당히 밀접한 관계가 있다고 느꼈습니다.
아직은 유니티를 공부하는 초입 단계라서 깊게 공부하지는 않았지만 강의를 한 번 보고 직접 만들면서 고민해 봐야겠다고 생각했습니다.

이런 컴포넌트도 패턴의 한 종류입니다.


컴포넌트(Component) 패턴이란?


말 그대로 컴포넌트를 만들어 한 개체가 여러 분야를 서로 커플링 없이 다룰 수 있는 패턴이다.

한 클래스 안에 모든 로직을 넣고, 기능이 추가되면 계속 같은 클래스에 포함시키면 결합도가 계속 올라가게 됩니다.
이런 방식의 코드는 코드 한 줄을 수정해도 엄청난 사이드 이펙트를 발생 시킵니다.

컴포넌트 패턴은 이런 문제를 줄이기 위해 로직을 기능별로 컴포넌트화 합니다.
이렇게 클래스로 분히한 것을 가독성을 올리고 Decoupling 시켜 협업에 유용하게 만듭니다.


아직 유니티를 배우는 초입 단계여서 컴포넌트를 생성해보는 과정을 거치고 있습니다.
C#도 자바(Java)처럼 객체 지향 프로그래밍 방식을 따르는 언어로 유니티에도 이런 패러다임이 그대로 녹아 있다고 느꼈습니다.

어떻게 보면 이렇게 직접 컴포넌트를 만들고 분리를 하는 유니티 개발 방식이
객체 지향을 좀 더 체득하고 고민해보는데 도움이 될 것 같다고 생각했습니다.



참고 자료


  • [ Pattern ] Component Pattern(컴포넌트 패턴) in Unity C# => 링크
  • Unity Docs - 게임 오브젝트 => 링크
  • Unity Docs - 컴포넌트 사용 => 링크
  • 인프런 - [C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진 => 링크
  • FIF's 코딩팩토리 - 컴포넌트 정의 - 컴포넌트란 무엇인가? => 링크
  • 공부하는 식빵맘 - Chapter 1. 컴포넌트 패턴(Component Pattern) => 링크
profile
기술에 대한 고민과 배운 것을 회고하는 게임 서버 개발자의 블로그입니다.
post-custom-banner

0개의 댓글