목록C# (3)
DNF LOVE
이번에 진행할 Unity Project는 2.5D로 되어있는 비행기 슈팅 게임이다. 프로젝트를 진행하기 전에, Unity의 대표적인 최적화 방법인 Object Pooling을 소개하도록 하겠다. [Object의 데이터가 적재되는 메모리, Heap] 이전 포스터 중, 메모리 구조에 대한 글을 쓴 적이 있다. Click 보통 Unity에서 Object들을 생성하고 관리하는 것은 동적 할당의 영역인 Heap 에 데이터가 적재된다. 메모리는 한계를 가지고 있는 자원이기 때문에, Heap에 데이터가 쌓이게 되면 그 프로그램의 성능이 떨어지게 된다. 이번 슈팅 게임으로 예를 들면, 보통 유저들이 슈팅게임을 할 때 방향키로 비행기의 좌우를 조절하며 공격키는 연속발사를 하게 된다. 보통으로 구현하는 Object를 생성..

우리의 게임 최종적 모습은 이렇게 된다. 순서대로 구현해보도록 하자! 1. Player와 Coin이 부딪치면 Coin이 사라지도록 하자.(gameobject Destroy) 우리가 자주 하는 쿠x런을 떠올려 보도록 하자. 쿠키가 젤리를 먹으면 어떻게 되는가? 젤리는 플레이어가 움직임과 동시에 사라지고 점수가 올라가지 않는가? 그렇다면 플레이어와 코인이 부딪치면 코인이 사라지는 것을 구현해야 한다. 그럴때 사용하는 것이 Object.Destroy함수이다! Destroy함수는 gameobject, 시간을 매개변수로 갖고 있는 함수이다. 첫번째 매개변수는 사라질 Object를 나타내고, 두 번째 매개변수 시간 t는 Destroy함수가 호출되고 몇 초 뒤에 Object가 사라지는 것을 설정하기 위해서 존재한다...

우선, Player에 붙여있는 하위 컴포넌트들을 받아오도록 하자. 컴포넌트를 받아오기 위해서는 해당 Object에 붙여 있는 스크립트 내 Start, Awake 함수 등 오브젝트가 활성화 되었을 때 1번만 받아와도 된다. 우선 변수들을 PlayerControler 스크립트에 선언하도록 하자. private와 public은 접근 제한자인데 public을 사용하면 해당 인스펙터창에 보여지고, private를 사용하면 인스펙터창에 숨겨져 보인다. public은 인스펙터창에서도 충분히 설정할 수 있는데 이 리지드바디는 어떻게 받아올까? 그것은 바로 활성 함수들을 통해 충분히 받아올 수 있다. Start함수에 Rigidbody rb는 해당 오브젝트(this)의 컴포넌트를 받아오겠다(GetComponent 함수 사..