목차

UILabel과 DynamicFont

UILabel의 DynamicFont 글꼴이 깨져보이는 현상. 디바이스에서도 계속 발생되는 현상인지는 모르겠지만 에디터에서는 깨져보이는 현상.

대상버젼 :

  1. Unity5
  2. NGUI 3.8.x ~ 3.9.0
// UILabel.cs 에서 일부분을 수정.
 
/// <summary>
/// "Font.textureRebuilt += OnFontChanged;" 로 폰트 생성될때 텍스쳐 생성용 글자를 넘기는 함수를 등록하지만,
/// 일정 시간 후에 'Font.textureRebuilt' 의 이벤트 함수가 모두 삭제 되는게 아닐까??
/// </summary>
/// @todo : 폰트 텍스쳐가 재생성 될때 제대로 호출되는 방법을 찾아보자. 언젠가는 삭제되어야 한다.
/// FIXME: 언젠가는 삭제되어야 한다.
#if UNITY_EDITOR	
void LateUpdate()
{
  if(trueTypeFont != null)
  {
    trueTypeFont.RequestCharactersInTexture(mText, mPrintedSize, mFontStyle);
	RemoveFromPanel();
	CreatePanel();
  }
}
#endif
 
protected override void OnEnable ()
{
  base.OnEnable();
#if UNITY_EDITOR
  Font.textureRebuilt += OnMyFontChanged; // FIXME : remove someday
#else
  if(!mTexRebuildAdded)
  {
    mTexRebuildAdded = true;
	Font.textureRebuilt += OnFontChanged;
  }
#endif
}
 
#if UNITY_EDITOR
void OnMyFontChanged(Font font)
{
  if(trueTypeFont != null && trueTypeFont == font)
  {
	trueTypeFont.RequestCharactersInTexture(mText, mPrintedSize, mFontStyle);
	RemoveFromPanel();
    CreatePanel();
  }
}
#endif