Unity 엔진의 원리

김펭귄·2024년 11월 13일

Unity 기초

목록 보기
1/9

참고 영상

(https://youtu.be/S287iwsU2bE)

Unity는 어떤 원리로 작동할까?

Background

  • 게임은 조립해서 만드는 것이다.
  • 부품들을 조립해 오브젝트를 만들고, 오브젝트로 게임 세상을 만든다.

상속

  • 기존에 존재하던 코드를 재사용해(덧붙여) 다른 오브젝트를 만듦. 이를 통해 작성해야 하는 코드의 양을 줄일 수 있다.

  • 랜더링 : 그림을 그려주는 기능

  • 하지만 생각보다 상속을 통한 재활용이 효율적이지 않았음. -> 컴포지션 등장

컴포지션

  • 미리 부품(컴포넌트)들을 만들고 필요한 부품들을 조립하여 오브젝트로 사용

  • 장점 : 오브젝트에 필요한 컴포넌트는 그냥 넣어주면 되고, 필요 없으면 빼주면 된다. 또한 컴포넌트를 넣고 빼는 것에 오브젝트에 대한 그 기능의 존재 유무만 영향을 줄 뿐 어떠한 에러도 발생시키지 않는다.

  • Unity에서의 컴포지션

  • Cube라는 게임 Object에 4가지 component가 조합되어 있다.

  • Transform : 위치, 크기, 회전 담당. 이 기능으로 공간 상에서 좌표를 가질 수 있음.

  • Mesh filter : 그래픽의 외곽선

  • Box collider : 물리적인 표면. 다른 물체간의 통과를 막을 수 있다.
    Mesh Renderer : 그래픽 외곽선을 따라 실제로 그림을 그려줌.

  • 즉, base에서 하나하나 코드를 짜는 것이 아니라 이미 만들어진 component들을 추가하여 Object를 완성한다.

  • 또한 기능들을 빼준다 해서 Object에 에러가 생기는 것이 아닌, 그 기능만 존재하지 않게 된다.

    • 예를들어, box collider를 빼면 물체끼리 통과가 가능할 뿐 에러가 생기는 것이 아니다

Unity의 핵심

  • 이미 만들어져있는 component들이 어떻게 만들어졌는가가 중요한 것이 아니라, 이 component들을 어떻게 조립하고 어떠한 명령을 내릴 것인지가 핵심이다.

Component 제어

  • Unity에서의 component들은 서로에 대해 독립적이다. 영향을 끼치지 않음.
  • Broadcasting 방식을 통한 제어 : Unity가 메시지를 뿌리면 모든 게임 내의 object가 메시지를 받고 메시지에 해당하는 object만이 메시지 내용을 처리.
  • MonoBehaviour : 모든 component가 가지고 있는 base로, 이를 통해 unity의 제어를 받을 수 있다(unity의 message를 받을 수 있다).


1. Unity가 Hello를 수행하라는 메세지를 broadcasting
2. 모든 Object들이 메세지를 받고 확인
3. 자신에게 해당하는 내용인 경우 Hello수행
4. 자신에게 해당하지 않는 내용이라면 에러를 발생시키는 것이 아니라 그냥 무시


1. A와 B object가 서로 부딪혔을때
2. A와 B는 서로 부딪힌 사실을 모름. 각 object의 component도 부딪혔다는 사실을 모름
3. 대신에 rigidbody component가 OnCollision이라는 메세지를 broadcast
4. A, B는 충돌했다는 사실을 모르지만, 메세지를 받고 자신들에게 해당하는 내용임을 확인
5. 그리고 collision에 해당하는 충돌처리를 실행

profile
반갑습니다

0개의 댓글