[Unity] 컴포넌트 개념

윤주원·2025년 6월 18일

유니티

목록 보기
3/5
post-thumbnail

Unity 템플릿 종류

  • templates: 미리 구성된 프로젝트 샘플

    • High Definition 3D (HDRP) - 고품질 그래픽용

    • Universal 3D (URP) - 범용 렌더링용

    • Built-in Render Pipeline - 테스트 용도로 적합(에셋 호환성 좋음)

코드 구조의 이해

  • 상속과 재사용의 한계
    • 순수 상속 기반 설계의 문제점:
      • 새로운 오브젝트마다 코드 수정 필요
      • 코드 재사용성 저하
      • 기획자의 개발자 의존도 증가

컴포넌트 시스템

  • 컴포넌트(Component): 조립식 부품을 기반으로 오브젝트 구성 (서로 독립적)
    • Mesh Renderer: 시각적 요소 담당(물체의 모양을 보여줌)
    • 해제 시 와이어프레임만 표시

  • RigidBody: 물리 동작 처리
        
  • 유니티는 왼손 좌표계:X축: 좌우, Y축이 상하, Z축: 정면
  • 이동 함수: transform.translate(vector)
void Update()
{
    if(Input.GetKeyDown(KeyCode.A))
    transform.Translate(0.0, 0.01f, 0);
}
  • Box Collider : 충돌 범위(박스형태)
  • 기즈모 : 오브젝트에 여러 정보를 확인할 수 있는 형태
    업로드중..

유니티의 참조와 값

참조 타입값 타입
classc# 내장 변수 (bool, int, floot 등)
unity 모든 componentstruct 구조체(Vector3, Color 등)
작성하는 c# 스크립트

브로드캐스팅 (Broadcasting or 이벤트 시스템)

  • 한 번의 메시지로 여러 MonoBehaviour 를 가진 객체에게 동시 전달되는 방식
  • 모든 ComponentMonoBehaviour를 상속받는다.

작동 원리

  • Unity에서 특정 이름을 가진 메서드(Start, Update 등)를 가진 모든 MonoBehaviour에게 자동으로 메시지를 전달

메시지를 받을 수 있는 컴포넌트가 100개라면, 100개 모두 전달받음

  • 자신과 관련 없는 메시지라면 해당 컴포넌트는 무시

  • 발신자와 수신자가 서로를 알 필요 없음

  • 메시지를 보내는 쪽은 누가 받는지 모르고

  • 받는 쪽도 어디서 왔는지 알지 못함

장점

  • 컴포넌트 간 독립성 유지
  • 구조가 단순하고 확장성이 높음

유니티 내 대표적인 브로드캐스트 메서드

  • 유니티 이벤트 메서드 : 브로드캐스팅 되기 위해 구현된 메서드
    • 대표적인 예:
    • Start(), Update(), OnTriggerEnter()

인스펙터 창 주요 컴포넌트

  • Transform
    • 오브젝트의 Position, Rotation, Scale를 담당
    • 부모 오브젝트 정보(숨겨져 있음)
  • Mesh Filter

  • 오브젝트의 형태(모양) 를 결정하는 컴포넌트
  • 어떤 3D Mesh 데이터를 렌더링할지 지정

유니티는 왼손 좌표계를 사용

  • X축: 오른쪽이 +, 왼쪽이 −
  • Y축: 위쪽이 +, 아래쪽이 −
  • Z축: X축을 기준으로 왼쪽이 +, 오른쪽이 − (오브젝트의 전방)

월드 위치와 로컬 위치

1. 전역 위치 (World Position)

  • 씬 전체에서의 절대 좌표
  • 부모 유무와 관계없이, 월드 공간 기준 transform.position

2. 로컬 위치 (Local Position)

  • 부모 오브젝트를 기준으로 한 상대 위치
  • 부모의 좌표계(Local Space)를 기준으로 계산됨 transform.localPosition

예시

  • 부모 A의 위치: (5, 0, 0)
  • 자식 B의 로컬 위치: (2, 0, 0) → 자식 B의 전역 위치는 (7, 0, 0)

회전 개념

  • 회전은 축을 기준으로 이루어진다
  • Transform.Rotate() 또는 Quaternion.Euler()로 조작 가능
  • 로컬 회전과 전역 회전을 구분해야 함

그리드 단위

  • 1칸 = 1미터 단위로 배치
  • 실제 물리 크기를 기준으로 구현 → 충돌 처리에 영향을 줌
profile
안녕하세요

0개의 댓글