【Unity】Textにテクスチャを貼り付ける


文字をグラデーションにするのは出来たけどテクスチャを張ることは出来ない。

【Unity】Textの色をグラデーションにする
キャンバスのテキストは単色なら選択できるが、グラデーションさせるにはひと手間必要になる。まず元となるテキスト要素を作る ( Create UI > Text ) 。次に C# でエ...

ポップで自由なフォントを使うにはビットマップフォントを作って適用する必要がある。

 

結構面倒なのでちょっとズルをしてテクスチャを張ったみたいにしてみる。

 

まず空の Canvas に同じ大きさの Text と Image を作る。

Text の文字色と Image の色を基本色(黒、白がわかりやすい)にする。

Texture2D.ReadPixels でスクリーンショットを撮る。(Texture A)

 

同じ大きさのTexture2Dにテクスチャ画像を貼り付ける。(Texture B)

 

Texture Aを走査して背景色(Color.black)と異なる色の場所をTexture Bの色で置き換える。文字のフチの部分は薄めの色になっているため、文字色(Color.white)と同じ色を置き換えようとするとフチの部分が残ってしまう。

 

あとは出来上がったテクスチャを適当なものに貼り付けると出来上がり。

文字表示の前後でCanvasをオンオフすれば自由に文字が使えます(1フレーム未満表示されるけど)。

ちょっとまとめると、

  • メリット
    • ビットマップフォントを作らなくてよい。
      • 気軽にフォント(ダイナミックフォント)を変えられる。
      • 容量を圧迫しない
      • 用意と設定がめんどくない
  • デメリット
    • 一瞬画面にキャンバスが表示される(致命的)
    • 出来上がるのはテクスチャ(利用しづらい)
    • プログラムの設定がめんどい

 

フォントのレンダリングを画面外でやって、それをテクスチャに出来れば多少は使えそう。 今のところはここまで。

 


コメントを残す

メールアドレスが公開されることはありません。