dmc31a42 / UnityL10nTool

Unity Game Localization Tools is helper to make localization patch for un-supported language.
70 stars 9 forks source link

NGUI FontPlugin Development #11

Closed dmc31a42 closed 5 years ago

dmc31a42 commented 5 years ago

10

dmc31a42 commented 5 years ago

Make Id field to FontAssetMap bda9f88fe917aacddab865a3f4df276a078a86df due to UIFont MonoBehaviour does not contain name.

dmc31a42 commented 5 years ago

@MoorDev NGUI 폰트 지원 베타가 발표되었습니다. v0.1.4를 참고하여주시고. 두분이 거의 동시에 물어보셔서 일단 제가 정한 작업 순서를 말씀드립니다. NGUI 폰트 테스트와 FontPlugin 매뉴얼 작성, NGUI 폰트 플러그인 사용법 작성, 빌드와 패처 사용법 작성을 병행함->Unity 기본 폰트(다이나믹 로드만, 비트맵은 추후에) 플러그인 지원 개발->Unity 기본 폰트 플러그인 테스트 및 매뉴얼 작성->전체 매뉴얼 작성 순으로 이루어질 것입니다.

dmc31a42 commented 5 years ago

@MoorDev 대충 이런식으로 보이네요. image

MoorDev commented 5 years ago

감사합니다! 기존 Assembly파일(바이트코드)를 수정해서 Res파일에 있는 폰트를 추가로 읽게 하는 원리인가요?

dmc31a42 commented 5 years ago

유니티 엔진에서 사용하는 폰트 에셋(플러그인)은 대부분 MonoBehaviour(프로그래밍적으론 클래스의 인스턴스, 폰트 측면에선 glyph; 각 글자가 아틀라스의 어느 위치에 있고 어느 크기로 표시되어야 하는가) Material(질감, 특별한 설정이 없으면 기본 머테리얼) Atlas(BMFont의 비트맵 이미지에 해당) 으로 구성되어있습니다. 빈 프로젝트를 생성해서 한글이 지원되는 폰트 에셋을 추가하여 빌드한 후 만들어진 게임에서 해당 에셋을 추출하여 적용할 게임에서 필요한 부분을 바꿔치기 하는겁니다.

dmc31a42 commented 5 years ago

sharedasset#.assets에서 해당하는 asset을 찾고, MonoBehaviour(NGUI의 경우 UIFont)에서는 glyph정보만 바꿔치기, Material은 손댈 것 없음, Atlas에서 이미지 파일이 저장된 경로(원래 AssetsName.assets.resS로 되어있음), 이미지의 크기, 이미지의 총 용량을 수정합니다. 어셈블리를 건들이지는 않고 에셋의 내용만 수정하는겁니다.

dmc31a42 commented 5 years ago

유니티 엔진에 사용되는 폰트들에 대한 설명(아직 미완성)은 https://blog.nakwonelec.com/2018/04/20/폰트-엔진플러그인-소개/ 유니티 엔진에서 사용되는 파일들의 역할은 https://blog.nakwonelec.com/2018/03/13/유니티-게임의-기본-폴더-구조/ 여기를 참고해보시면 됩니다.

MoorDev commented 5 years ago

이해가 되었습니다. MonoBehaviour에서 glyph정보만 바꾸는 것이었군요. MonoBehaviour에서 에셋정보를 통째로 갈아치워서 크래시가 나는 것이었네요. 제가 무엇을 잘 못했는지 알았습니다. 감사합니다.

dmc31a42 commented 5 years ago

첨언하자면 UIFont에 해상도정보도 있을껀데 그것도 같이 수정해야합니다. 여기서 포인트는 mMat, mScript같이 m_FileID와 m_PathID을 가지고 있는 정보(포인터; PPtr)는 건들면 안됩니다.

dmc31a42 commented 5 years ago

추가 요청사항이 없으면 저녁에 issue 닫겠습니다

MoorDev commented 5 years ago

네 알겠습니다.