[Unity 디자인 패턴] 컴포넌트(Component) 패턴

2024. 4. 17. 16:03· Unity/Unity 디자인 패턴
목차
  1. 서론
  2. 컴포넌트 패턴
  3. 컴포넌트 패턴의 특징
  4. 간단한 예시

[참고 사이트]

https://dhshin94.tistory.com/137

 

컴포넌트 패턴 (Component Pattern)

1. 컴포넌트 패턴 정의 서로 다른 기능은 나누어 작성하여 서로간 커플링 없이 다룰 수 있게 하는 것 => 로직을 기능별로 컴포넌트화 하는 것 2. 컴포넌트 패턴 사용 이유 using System.Collections; using S

dhshin94.tistory.com

 

서론

  • 유니티 디자인 패턴을 검색하면 컴포넌트 패턴이 다가가기 쉽다는 내용이 있었다. 그래서 이번엔 유니티 컴포넌트 패턴에 대해 공부해보았다.

컴포넌트 패턴

  • 위 참고사이트를 통해서 컴포넌트 패턴이란 무엇이고, 왜 사용하는지 알게되었다.
  • 유니티는 기본적으로 컴포넌트를 활용하는 시스템이다. 실제로 오브젝트의 인스펙터 창에 들어가는 모든 것들이 다 컴포넌트에 해당한다. Transform, SpriteRenderer, Box Colider, Script 등등

  • 내가 이해한 컴포넌트 패턴이란 오브젝트에 기능을 구현하기 위해 스크립트를 적용할 때, 기능을 구현하기 위한 하나의 스크립트가 아니라 세부 기능으로 나눈 여러 스크립트를 만든 다음 하나씩 추가하면서 기능을 구현하는 것이다.
    즉, 구현하고 싶은 최종 기능이 있을 것이고, 그 안에 세부 기능들에 대한 각각의 스크립트를 생성해주고, 마지막에 해당 오브젝트에 추가하여 최종 기능이 구현되게 하는 것이라고 이해했다.


컴포넌트 패턴의 특징

  • 각자 기능을 담당하는 컴포넌트들이 독립적으로 구현되어 있다.
    - 이동 기능 컴포넌트, 물리 기능 컴포넌트, 애니메이션 컴포넌트 등 독립적으로 각자 기능을 담당하는 컴포넌트가 있는 것.

  • 어떠한 기능의 컴포넌트를 없앤다고 해서 다른 컴포넌트에 영향이 가지 않는다.
    - +. -가 쉽다.

  • 코드의 의존성을 줄이고 재활용성을 가진다.

  • 컴포넌트만 수정하면 되서 유지보수 시 편하다.

간단한 예시

  • 오브젝트의 이동과 회전에 대한 기능을 추가.
  • 이동 기능은 기본적으로 오른쪽으로 이동, 기준 포지션을 넘으면 왼쪽으로 이동. 이 때도 기준 포지션을 넘으면 다시 오른쪽으로 이동.
  • 회전기능은 오브젝트가 오른쪽으로 회전.

=> 오브젝트가 이동과 회전, 두 개의 기능을 동시에 수행하는 것을 구현해보려한다.

▶ 하나의 스크립트로도 구현할 수 있지만 컴포넌트 패턴에 맞게 각 기능별로 스크립트를 만들어줬다.

▶ 이제 Move스크립트에는 이동기능 코드를, Rotate스크립트에는 회전기능 코드를 작성해보겠다.

 

[ Move.cs ]

public class Move : MonoBehaviour
{
    [SerializeField]
    bool moveRight;
    
    void Start()
    {
        moveRight = true;
        StartCoroutine("MoveCube");
    }
    IEnumerator MoveCube()
    {
        while (true)
        {
            if (transform.position.x > 4)
                moveRight = false;
            else if (transform.position.x < -4)
                moveRight = true;

            if (moveRight)
                transform.Translate(0.5f * Vector3.right, Space.World);
            else
                transform.Translate(-0.5f * Vector3.right, Space.World);

            yield return new WaitForSeconds(0.1f);
        }
    }
}

 

▶ 코루틴 함수를 사용하여 0.1초마다 이동하게 만들어줬다.

 

[ Rotate.cs ]

public class Rotate : MonoBehaviour
{
    void Start()
    {
        StartCoroutine("RotateCube");
    }
    IEnumerator RotateCube()
    {
        while (true)
        {
            transform.Rotate(10 * Vector3.up);

            yield return new WaitForSeconds(0.1f);
        }
    }
}

 

▶ 회전도 똑같이 0.1초마다 회전하게 만들어줬다.

 

[ 결과 ]

0

 

 

  • 사람마다 사용하는 디자인 패턴이 다르지만 컴포넌트 패턴은 나에게 왠지 친숙한 느낌이었다. 지금은 간단한 예시만 구현했지만 직접 게임을 만들 때는 패턴을 고려하면서 사용해야 할 것 같다.

 

'Unity > Unity 디자인 패턴' 카테고리의 다른 글

[Unity 디자인 패턴] 팩토리 매서드 패턴(Factory Method Pattern)  (0) 2024.04.25
[Unity 디자인 패턴] 심플 팩토리 패턴(Simple Factory Pattern)  (0) 2024.04.25
[Unity 디자인 패턴] 옵저버 패턴(Observer Pattern)  (0) 2024.04.22
[Unity 디자인 패턴] 싱글톤(SingleTon)에 대해 알아보자!  (0) 2024.04.16
  1. 서론
  2. 컴포넌트 패턴
  3. 컴포넌트 패턴의 특징
  4. 간단한 예시
'Unity/Unity 디자인 패턴' 카테고리의 다른 글
  • [Unity 디자인 패턴] 팩토리 매서드 패턴(Factory Method Pattern)
  • [Unity 디자인 패턴] 심플 팩토리 패턴(Simple Factory Pattern)
  • [Unity 디자인 패턴] 옵저버 패턴(Observer Pattern)
  • [Unity 디자인 패턴] 싱글톤(SingleTon)에 대해 알아보자!
ForMan_
ForMan_
C# 언어로 프로그래머스 문제를 풀이하고, Unity 엔진으로 게임을 개발하며, 자료구조를 공부하는 과정을 반복문처럼 꾸준히 탐구하고 공유하는 '반복해서 노력하는 남자, ForMan'의 블로그입니다.
ForMan_
반복해서 노력하는 남자, ForMan
ForMan_
전체
오늘
어제
  • 분류 전체보기
    • C#
      • 프로그래머스 코딩 문제 풀이
      • 자료구조 이해하기
      • 알고리즘 기초 익히기
    • Unity
      • Unity 디자인 패턴
      • Unity 타워디펜스게임 프로젝트
      • Unity 물리기반 Merge게임 프로젝트(수박라..
      • Unity FPS게임 프로젝트(오버워치라이크)
    • UI
      • 젠레스존제로 UI작업 시작
      • 젠레스존제로 UI 이펙트 작업
      • 젠레스존제로 UI 사운드 작업
      • 젠레스존제로 UI 스크롤뷰 작업(메뉴창)

블로그 메뉴

  • 홈
  • 방명록
  • 태그

최근 글

최근 댓글

인기 글

태그

  • 과일합치기
  • 오름차순
  • forman
  • 오버워치
  • 유니티
  • 유니티디자인패턴
  • 게임프로젝트
  • 수박게임
  • 동적프로그래밍
  • 유니티게임프로젝트
  • 프로그래머스
  • 타워디펜스게임
  • c#
  • 유니티게임
  • 코딩테스트
  • 정렬알고리즘
  • 머쓱이
  • Unity
  • 완전탐색
  • 오버워치만들기
Thanks for Skin
hELLO · Designed By 정상우.v4.2.2
ForMan_
[Unity 디자인 패턴] 컴포넌트(Component) 패턴
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.