자작 게임도 잘 부탁드려요~

adsense



[cocos2d-x / 플래피위치] 점수처리와 표시. 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 환경에서는 동작하지 않습니다)






덧글

댓글 입력 영역


Books

Geek라이프

기초부터 시작하는 모형 전자공작
박성윤 저

사이토 나오키의 일러스트 첨삭 레슨 Before & After
사이토 나오키 저/박수현 역

MSX&재믹스 퍼펙트 카탈로그
마에다 히로유키 저/조기현 역

핵심강좌! Cocos2d-x
이재환 저
예스24 | 애드온2
일본서적 전문사이트 NEPIC