【Unity】TextMeshProのlocalScale拡大縮小でテキストが一瞬文字化けする
問題
- サブジェクトの通り、
TextMeshPro で localScale が (0, 0, 1) などの値から (1, 1, 1) に一瞬で拡大するとき、
フォントは適切に設置されているのに、なぜか少しの間「■■■■」と文字化けして表示される - Canvas 下にオブジェクトを仕込んで、その下に TextMeshPro を配置した際、
Object をエディタ上で直接上記の値に設定すると同様の事象が発生
原因
- localScale.y の値をゼロから1にした瞬間に文字化けするらしい
- 文字化けするということは認識されなくなったということだし、
localScale.yをゼロにするとテクスチャが解放されてしまうのだろうか??
- 文字化けするということは認識されなくなったということだし、
- localScale.x の値をゼロから1に一瞬で変えても何も起きない、問題ない
解決方法
- localScale.yの値はゼロにしない。new Vector3(0, 1, 0) だとか、
そんな感じに y だけ 0 にしない形で不可視状態にすれば、
元に戻したとき普通に表示される。
補足
なぜ localScale をゼロにするか
- uGUI にはオブジェクトをアクティブ・非アクティブで切り替えて表示・非表示を操作すると、
非アクティブ時にガベージコレクションが走ってしまう問題があるため。