경일게임아카데미 멀티 디바이스 메타버스 플랫폼 개발자 양성과정 20220919 ~ 0920 특강 2022/04/04~2022/12/14

Jinho Lee·2022년 9월 20일
0

2022.09.19 ~ 20 경일 메타버스 25주차 1 ~ 2일 특강 수업내용. 유니티 복습 정리

Unity

  • Unity Editor

    • Toolbar / Hierarchy Window / Game View / Scene View / Overlays / Inspector Window / Project Window / Status Bar

    • 이 외의 UI는 Window 메뉴에서 열 수 있다.

    • 간단한 조작법은 알아야 한다.

  • Scene & GameObject

    • Scene

      • 컨텐츠를 사용하여 작업하는 공간으로, 게임이나 애플리케이션의 전체 또는 일부를 포함하는 에셋(Asset)이다.
    • GameObject

      • Unity에서 존재하는 모든 오브젝트를 말한다.

      • 기능을 구현하는 컴포넌트(Component)의 컨테이너 역할을 한다.

      • GameObject는 계층적으로 다른 GameObject를 가질 수 있다.

      • 모든 GameObject는 Transform을 가진다.

        • Transform은 좌표계에서의 위치, 회전, 스케일을 표현한다.

        • Transform은 월드 혹은 부모 GameObject로부터의 상대적인 좌표를 나타낸다.

          • 월드인 경우를 월드 좌표계, GameObject인 경우 로컬 좌표계라고 한다.
    • 움직임이 없는 GameObject는 Static으로 설정

      • 반대를 Dynamic GameObject
    • 프로토타입을 만들 때 사용하는 Primitive GameObject가 있다.

      • Cube / Sphere / Capsule / Plane / Quad / Cylinder
  • Component

    • GameObject의 기능적인 단위. 즉, 하나의 기능을 담당하는 스크립트.

      • 시각적인 기능 / 물리적인 기능 / 행위의 기능
    • Unity는 다양한 Component를 내재하고 있다.

    • 우리만의 Component를 작성하기 위해선 C# 문법을 알아야 한다.

      • public 필드의 경우 Unity Editor 상에서 인터페이스로 나타난다.

      • 혹은 SerializeField 특성을 사용

    • 모든 Component는 MonoBehaviour를 상속 받는다.

      • MonoBehaviour에는 Unity 엔진에 의해 호출되는 여러 이벤트 메시지가 정의되어 있다.

        • Awake() → OnEnable() → Start(0 → FixedUpdate() → Update() → LateUpdate() → OnDisable() → OnDestroy()

        • 각 이벤트 메시지가 언제 호출되는지 정확히 알아야 정확한 구현이 가능하다.

  • Input

    • Input Manager : Unity에 내장된 기본 입력 방법

    • Input System : 추가 패키지

  • Interaction ( Collision )

    • Layer

      • GameObject가 어떤 다른 것과 상호작용할 수 있는지를 정의

      • Layer Matrix 설정 방법 알아야 함.

      • Layer 체크는 비트를 사용

      • 0번부터 31번까지 사용 가능

    • Character Control : 아래의 두 방법은 게임 플레이 설계에 따라 다르게 적용한다.

      • Rigidbody

      • Character Controller

        • Rigidbody 컨트롤을 적용하지 않을 GameObject에 대해 주로 적용
      • 혼용은 권장되지 않음

    • Rigidbody

      • 물리 기능을 제공하는 Component

      • 힘과 관련된 기능을 제공

      • Collider와 함께 사용해서 충돌 처리에 사용

      • Kinematic Rigidbody : 물리 엔진 대신 스크립트에 의해서 동작하는 Rigidbody

      • Rigidbody는 최상위 GameObject에 단 하나만 부착해야 한다.

    • Collider

      • 물리적인 표면을 제공하는 Component

        • Box / Sphere / Capsule
      • 하나의 GameObject에 여러 개의 Collider를 부착할 수 있다.

      • Rigidbody 없이도 Collider를 부착할 수 있으며, 이를 Static Collider라고 한다.

      • 다른 Collider의 진입을 허용하려면 Trigger로 만들어주면 된다.

    • Event

      • Collider에 의해 충돌이 발생할 때 호출되는 이벤트 메시지가 존재한다.

      • OnCollisionEnter / OnCollisionStay / OnCollisionExit

      • OnTriggerEnter / OnTriggerStay / OnTriggerExit

      • 충돌은 이산적 → 연속적으로 바꾸려면 Rigidbody에서 CCD(Continuous Collision Detection) 설정이 필요

        • Rigidbody Inspector → Collision Detection - Continuous
          or Continuous Dynamic
      • Ragdoll

        • 꼭두각시 같은 움직임을 구현
      • Cloth

        • 천의 움직임 구현
    • 스크립트를 이용해서 상호작용

      • Raycast

      • Overlap

  • Coroutine

    • 시간에 기반한 동작을 편하게 구현할 수 있는 서브루틴

    • StartCoroutine()으로 코루틴을 시작할 수 있고, StopCoroutine()으로 코루틴을 중지할 수 있다.

      • StartCoroutine()으로 같은 이름의 코루틴을 여러 번 실행할 수 있다.

      • StopCoroutine()으로 등록된 코루틴 중 첫 번째 것만 중단시킨다.

    • 코루틴은 반드시 GameObject가 Active여야 한다.

    • Update() 이후에 실행된다.

  • 위 두 가지 기능은 MonoBehaviour에 포함되어있다.

  • Animation

    • 유한 상태 기계로 애니메이션을 구성할 수 있다.

      • Unity에서는 이 시스템을 Mecanim이라 한다.
    • 각 상태에 따른 동작을 StateMachineBehaviour로 표현할 수 있다.

      • 제공하는 추상 메소드 다섯 가지

      • OnStateEnter / OnStateExit / OnStateUpdate / OnStateMove / OnStateIK

    • Animation Event를 통해 애니메이션 실행 중 특정 시점에 메소드를 호출할 수 있다.

  • Audio

  • UGUI

    • Canvas

      • UI를 배치하는 컴포넌트

      • 모든 UI 오브젝트는 Canvas의 자식으로 존재해야 한다.

      • Render Mode에 대한 이해가 필요하다.

        • Screen Space - Overlay : 스크린 공간에 덧씌워지는 UI로 Main UI를 표현하는 데 사용

        • Screen Space - Camera : 특정 카메라로부터 일정 거리에 배치되는 UI

        • World Space : 가상 세계에 배치되는 UI

    • Rect Transform

      • Canvas 상에서의 위치, 너비, 높이, 앵커, 피봇, 스케일, 회전 등을 표현하는 컴포넌트
    • Layout

      • Layout Group : Layout Element를 관리하며 Layout을 구성하는 컴포넌트

      • Layout Element : 구성 요소

      • Auto Layout

    • Visual Component

      • 단순히 정보를 제공하는 UI

      • Text / Image

    • Interactive Component

      • 유저와 상호작용할 수 있는 UI

      • Button / Toggle / Toggle Group / Slider / ScrollBar / Dropdown / Input Field / Scroll View

  • Prefab

    • 재사용 가능한 GameObject

    • Scene에 동일한 GameObject를 배치하거나, 프로그램 실행 중 인스턴스화를 할 때 사용

  • Resource Management

  • Scriptable Object

    • 공통된 데이터에 대해 단 하나의 인스턴스만 만들 때 사용한다.
  • Tip

    1. Unity GC

    2. Hash값 사용하기

    3. UnityEngine.Object 서브 클래스에 대해서 Null 체크 되도록 피하기

      • Update() 같은 반복적으로 호출되는 메소드에서 컴포넌트 등의 Null 체크를 하지 않도록 주의한다.

      • Unity 자체적으로 관리를 하기에 C, C++ 등의 다른 언어에 비해 자원을 많이 사용한다.

    4. Attribute

    5. C# Job System

      • 멀티스레드 지원

0개의 댓글