728x90
728x90
유니티 함수 생명주기 - Awake / Start / Update / FixedUpdate / LateUpdate Update() 함수 Update() 함수는 프레임마다 호출하는 함수로, 시간 및 횟수 불규칙하다. 왜나하면 PC 성능/사양에 따라 갱신 여부(t)가 달라질 수 있기 때문인데 시스템이 빠른 곳에서는 0.01초만에 갱신될 수도 있고, 0.03초만에 갱신될 수도 있다. 터널링(Tunneling) 현상 발생 원인 이러한 경우 터널링 현상이 발생할 수 있는데 예를 들어 bullet을 벽을 향해 쏘는데 frame이 씹혀서 통과하는 경우가 종종 발생한다. 이는 t값이 Time.deltaTime의 값을 받기 때문인데 원래 Udpate에서는 t 가 Time.deltaTime으로 적용되 시간이 계속 증가해 ..
Unity 3D Rendering PipeLine 유니티 3D 공간 상에서 오브젝트를 그리는 전체 프로세스를 3D Rendering Pipeline이라고 부른다. 렌더링 파이프라인에서 가장 시작이 되는 프로세스는 카메라인데 카메라는 좌표에 따라 Local(model) - Global(World)로 나뉘고 Camera(View)로 시점을 나타낸다. 카메라 관련 프로퍼티 카메라를 사용해 3D 공간을 표현할 때 다음과 같은 중요한 프로퍼티들을 사용하고 있다. 시야 절두체(view frustum) 시야 밖에 있는 오브젝트는 삭제해서 그림 시야각(Field of View) 시야 절두체를 제외한 시야 범위 Clipping planes 시야 절두체를 벗어나는 부분을 자르고 그릴 범위(Near / Far) 투영(pro..
유니티에서 이미지 Image와 UV좌표 3D 오브젝트는 가로 x, 세로 y, 깊이 z라고 하지만 pixel을 가진 2D 텍스처 이미지는 가로 U, 세로 V해서 UV좌표라고 한다. pixel로 된 이미지를 3D mesh에 덮어 씌우는 것을 UV Wrap이라고 한다. UV Wrapping 할 때 시작점을 어디로 둘 것인지를 정하는게 Offset 값이다. 이미지 텍스처의 Wrap Mode를 보면 다음과 같은 컴포넌트 요소를 확인할 수 있다. Repeat 값으로 두면 텍스처가 특정 방향으로 이동하면서 사라지면 새로 나타나는 부분에 계속 붙어, 이미지가 계속 반복되며 연결되는 것과 같은 효과를 줄 수 있다. 드래곤 플라이트와 같이 2d 콘텐츠를 제작할 때 배경이 무한 스크롤 되게 하는 기능을 구현할 때 사용하면 ..
게임 개발과 관련하여 팀 프로젝트 협업과 MVC 패턴의 이해 개발 팀 프로젝트를 수행하는 과정에서 클라 - 클라 / 클라 - 서버 간 협업을 자주 하게 된다. 여기서 문제는 개발 프로세스가 연결되어 있어 서로 영향을 주고받기 때문에 만약 한 쪽에서 구현이 안되면 다른 쪽도 개발 진척에 문제가 발생할 수 있다. 가령 서로 다른 두 개발자가 각각 피격 기능과 저장 기능을 구현해본다고 가정해보자. 피격 기능으로 체력이 깎인 데이터가 있어야 그 데이터가 저장되는지를 테스트해 볼 수 있기 때문에 개발 순서 상 피격 기능 -> 저장 기능 순으로 구현되어야 할 것이다. 하지만 개발 기간은 제한되어 있기 때문에 한쪽이 개발을 완료할 때까지 기다릴 수 없다. 이럴 때 실무에서는 모듈화(Modularity)를 통해 워크 ..
메모리의 정적/동적 할당 유니티 컴파일러가 실행되는 동작 순서는 정적 메모리 영역 -> 동적 메모리 영역이다. 세부적으로 나눠서 살펴보면 먼저 정적 메모리 공간의 함수들이 실행되고, 정적 영역의 static 변수들이 실행된다. 그 다음 동적 메모리 공간에 저장된 변수들이 실행되게 된다. 유니티 싱글톤(Singleton) 패턴 활용 이러한 메모리 할당 개념을 바탕으로, 싱글톤 객체를 설명해보고자 한다. 일단 유니티에서 생성되는 모든 객체는 최초로 동적 메모리 공간인 heap에 올라간다. 하지만 heap 영역에 위치한 객체들은 사용 범위에 한계를 가지고 있을 수 있다. 그렇기 때문에 객체 클래스 자체를 static 영역에 올리고 instance를 생성해 각각 클래스 별로 뿌려줄 수 있다. 이 것이 바로 관리..
Get/Set 프로퍼티와 객체지향 캡슐화 객체지향의 3요소는 캡슐화, 상속, 다형성이다. 상속 상속의 대표적인 예시는 C# 스크립트의 첫 장면에서 확인할 수 있다. 스크립트를 생성하면 Class AA : MonoBehaviour라고 상단에 표시된다. 이는 AA 라는 클래스가 MonoBehaviour라는 부모 클래스를 상속 받은 개념이다. MonoBehaviour에 마우스 커서를 대고 F12를 누르면 MonoBehaviour 클래스를 볼 수 있는데 MonoBehaviour 클래스 역시 Behaviour를 상속받은 것을 확인할 수 있다. 이 역시 들어가보면 Component 클래스를 상속 받고 있고, Component 클래스 역시 Object 클래스를 상속 받은 것을 확인할 수 있다. 즉, 객체 지향에서 사..