2023년 11월 19일 일요일

[cocos2d-x] 2d 게임엔진으로 플래피버드 클론 게임 만들기 (점수처리와 표시. Label의 모든 것)

 

영상에서는 설명할 기회가 없었기에 보충하는. cocos2d-x 라벨의 모든 것

​

​

★ VS에서 cocos2d-x의 개발 시, 한글 사용 상의 주의점

​

1. 라벨에 한글을 출력하려면 소스 상단에

​

#pragma execution_character_set("utf-8")

​

를 넣어주도록 합니다. (한글 출력을 사용하는 소스 파일마다 모두 넣어주세요)

그렇지 않으면 한글이 나오지 않습니다.

​

2. 한글이 들어간 소스는 반드시 인코딩을 utf-8로 변경해서 저장해야 합니다.

​

다른 이름으로 저장→저장버튼 옆의 화살표를 눌러 인코딩하여 저장 선택→

바꾸시겠습니까 Yes→코드에 유니코드(서명 있는 UTF-8), 줄 끝에 Windows(CR LF) 선택하고 확인

​

이걸 해두지 않았다가 재수없으면(링크 참조) 나중에 한글이 다 깨지는 수가 있습니다. (복구 불가!)

​

​

​

★ 사이즈와 얼라인먼트

​

라벨에서 Alignment, Size가 무엇을 의미하는가? 다음 이미지를 참조해 주세요.




Size는 라벨을 둘러싸는 사각형 범위입니다.

이 범위를 벗어나면 가로로는 줄바꿈이 되고 세로로는 잘립(클리핑)니다.

TextHAlignment, TextVAlignment는 이 Size 안에서의 정렬입니다. 앵커와는 별개입니다.

​

Size를 지정하지 않거나 Size::ZERO를 지정하면 이상의 내용들은 동작하지 않습니다.

​

줄바꿈의 경우 컨트롤문자 \n으로 강제 줄바꿈 할 수 있습니다.

​

간단히 말해서 게임의 대화 씬 같은 곳에서 말풍선을 벗어나지 않게 하려면 이 Size를 지정하면 됩니다.

SIze를 벗어날 경우 강제로 폰트 크기를 변경하는 기능이.. 자체적으론 없을겁니다.

getContentSize로 라벨객체의 크기를 읽어와 대화상자에 스케일을 강제로 맞추는 식으로 구현하면 비슷하게 가능은 한 정도.

​

가로 사이즈만 지정하고 세로 사이즈를 0으로 하면, 강제 줄바꿈은 되지만 세로 클리핑은 생기지 않습니다.

하지만 이때 getContentSize로 세로 크기를 가져와 보면 이 라벨의 세로 높이를 알 수 있습니다.

이것을 사용해서 스크롤뷰의 크기를 맞추거나, 대화창 내에서의 스케일을 조정하는데 쓸 수 있습니다.

​

※강제 줄바꿈의 경우, 1바이트 문자(영문자숫자)를 공백 없이 나열하면 줄바꿈이 생기지 않고 가로 클리핑이 될 수 있습니다.

​

​

★ TTF라벨과 BMF라벨

​

TTF라벨은 트루타입폰트 라벨, BMF라벨은 비트맵폰트 라벨입니다.

​

대체로 BMF라벨 쪽이 용량이나 처리속도에서 유리합니다..만, 한글을 쓰기가 어렵다는게 단점.

또 BMF라벨에는 api로 외곽선이나 그림자 효과를 주기 어렵습니다. (폰트에 그림으로 박아 넣어야 합니다)

대신 비트맵 폰트는 그림이기 때문에, 문자에 고정된 색을 넣거나 이런 저런 장식을 할 수 있습니다.

​

TTF폰트를 프로젝트에 포함(임베딩)할 경우에는 라이센스나 용량에 주의해야 합니다.

공공 라이센스에 용량도 크지 않으며 모양까지 예쁜 폰트로 추천하는건 경기천년제목체입니다.

프리코네나 우마무스메 한국판에서도 쓰고 있는 폰트.

​

한때 배민폰트들 많이 썼는데, 사기업 폰트는 아무리 무료라고 해도 주의하는게 좋습니다. 언제 정책 바뀔지 모르고 바뀌면 그거 다 갈아 엎어야 합니다..

공공기관 폰트는 그럴 가능성이 상대적으로 적고, 구글에서 제공하는 폰트도 괜찮은데 한글폰트의 경우 대부분 용량이 무지막지한 편.


구글의 Luckiest Guy 폰트는, 캐주얼 게임용 영문 폰트로 많이 씁니다.

​

​

TTF폰트는 api로 외곽선이나 드롭섀도우를 줄 수 있습니다.

enableOutline, enableShadow를 사용합니다.

​

TTF폰트의 색 지정은 setTextColor를 사용하고, 인수는 Color4B 형태입니다.

BMF폰트의 색 지정은 setColor를 사용하고 Color3B를 쓰는데, 단 이때 만들어놓은 폰트가 하얀색이어야 합니다.

(즉, 이미지의 색을 Tint하는 것입니다)

​

비트맵 폰트에는 또 한 가지 장점이 있는데,

이건 원본 폰트를 임베딩하는게 아니라 그림으로 바꿔서 넣는거라 라이센스 시비에서 벗어날 가능성이 있습니다.

물론 그래도 귀찮아질 수 있으니 가급적 소스는 공공 라이센스 폰트를 사용합시다.

​

​

★ 대량의 문자열을 라벨로 만들지 마세요.

​

매뉴얼이나 약관 같은 걸 라벨로 그려서 보여주려고 하지 마세요.

어마어마하게 느려집니다.

유니티는 생각보다 안 느려지던데, cocos2dx에서는 안됩니다.

필요한 경우 웹뷰를 사용하거나 외부 링크를 호출합시다.

(웹뷰는 win32 환경에서는 동작하지 않습니다)

​

​

비트맵 폰트 제작기 Littera 다운로드 주소 : jsroads/Littera-bitmap-font-generator: Littera — bitmap font generator 本地版本 (github.com)



댓글 없음:

댓글 쓰기

[cocos2d-x] 2D 엔진으로 만드는 3D 슈팅게임

왜 2D 게임엔진으로 3D 게임 만들려고 삽질을 합니까?   예 뭐 3D 게임 만드는데 좋은 엔진은 아닙니다. 셰이더도 부실하고 물리엔진 쓰기도 까다롭고. 요즘은 외부업체 SDK 인트하기도 점점 힘들어지고.. ​ 그래도 기왕 해 본 거, 여기까지 왔으...