티스토리 뷰

BlockGrid


게임이 시작되면 블록을 생성하고 활성화된 볼록으로 score를 계산해서 화면에 표시하는 actor.


header

Score

Size

BlockSpacing

score를 나타내거나 block의 간격을 설정할 수 있는 초기값.

Size, BlockSpacing은 특히 에디터에서 편집할 수 있도록 UPROPERTY로 설정되었다.



BeginPlay

게임이 시작되고 actor가 활성화되면 가장 먼저 호출되는 초기화함수



AddScore

score수치를 변경시키도록 명령하는 함수


cpp

블록 생성

설정한 초기값을 바탕으로 블록을 생성하고 초기화한다.



score 증가

Score값을 1 증가시키고 text render component의 내용을 최신화한다.




Block


실제 마우스나 VR기기 같은 입력장치로 클릭할 수 있는 actor. BlockGrid에 의해 9개가 3x3배열로 생성된다.


header

isActive

highlight 상태를 나타내는 변수

Material들

색을 표현하기 위해 사용하는 material component

OwningGrid

블록을 생성한 grid를 가리키는 포인터



BlockClicked

마우스 클릭 이벤트를 처리하는 함수

OnFingerPressedBlock

터치 이벤트를 처리하는 함수

HandleClick

모든 클릭 이벤트를 통합해서 처리하는 함수

Highlight

마우스 오버 상태로 전환시키는 함수



GetDummyRoot

GetBlockMesh

getter


cpp

ConstructorHelper

static 구조체로 사용할 material들을 미리 설정해두어서 같은 클래스의 인스턴스를 actor로 만들더라도 material은 한번만 로드하고 사용할 수 있도록 최적화 하는 방법



이벤트 매핑

마우스 click과, touch 이벤트를 각 BlockClicked()와 OnFingerPressedBlock()에 매핑한다.



HandleClicked

material을 노란색으로 변경하고 score에 값을 올려준다.



Highlight

전달된 값에 따라서 기본 material, 파란색 material을 전환한다.






마치며


처음 포스팅하는거라서 세세한 부분까지 전부 설명하려고 했는데 다음부터는 해당 프로젝트에 특성화된 코드들만 요약해서 포스팅해야겠다. syntax highlighting 때문에 코드를 직접 캡쳐해서 사용하고는 있는데 코드량에 따라서 이미지가 너무 커져서 폰트가 깨져보이는 현상이 있다. 이부분도 어떻게 해결할지 고민해봐야겠다.



댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함